diff options
author | Adam Gross <grossag@vmware.com> | 2019-11-25 19:05:19 (GMT) |
---|---|---|
committer | Adam Gross <grossag@vmware.com> | 2019-11-25 19:09:37 (GMT) |
commit | e76e874f44824172d1118b0f028256124332a101 (patch) | |
tree | 41b47e43a895e2f517254f835ba12f3c275757a5 /src/engine/SCons | |
parent | 49b5f9ec268d6f913088cae0b2942f5c7a139693 (diff) | |
download | SCons-e76e874f44824172d1118b0f028256124332a101.zip SCons-e76e874f44824172d1118b0f028256124332a101.tar.gz SCons-e76e874f44824172d1118b0f028256124332a101.tar.bz2 |
Add support for Value objects being implicit dependencies
As part of consolidating outside dependencies, the code I work on takes on
Value objects as implicit dependencies. That allows us to take on a dependecy
to an entire build (e.g. our compiler) rather than 500 files from it.
This has worked fine in practice for months now, but it turns out to break
when using caching, because Node.get_contents() expects all dependencies to
have the "name" attribute. This change adds that attribute to the Value class
and a test to confirm that Node.get_contents() works now.
Diffstat (limited to 'src/engine/SCons')
-rw-r--r-- | src/engine/SCons/Node/Python.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/Node/PythonTests.py | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/Python.py b/src/engine/SCons/Node/Python.py index 4a62f04..546769d 100644 --- a/src/engine/SCons/Node/Python.py +++ b/src/engine/SCons/Node/Python.py @@ -92,6 +92,10 @@ class Value(SCons.Node.Node): if built_value is not None: self.built_value = built_value + # Set a name so it can be a child of a node and not break + # its parent's implementation of Node.get_contents. + self.name = value + def str_for_display(self): return repr(self.value) diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py index 8a01503..4c15e96 100644 --- a/src/engine/SCons/Node/PythonTests.py +++ b/src/engine/SCons/Node/PythonTests.py @@ -110,6 +110,16 @@ class ValueBuildInfoTestCase(unittest.TestCase): vvv = SCons.Node.Python.Value('vvv') bi = SCons.Node.Python.ValueBuildInfo() + +class ValueChildTestCase(unittest.TestCase): + def test___init__(self): + """Test support for a Value() being an implicit dependency of a Node""" + value = SCons.Node.Python.Value('v') + node = SCons.Node.Node() + node._func_get_contents = 2 # Pretend to be a Dir. + node.add_to_implicit([value]) + contents = node.get_contents() + if __name__ == "__main__": unittest.main() |