summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-11-02 03:12:07 (GMT)
committerSteven Knight <knight@baldmt.com>2001-11-02 03:12:07 (GMT)
commit2f51f69cf055ec44e37eaac22b1992bd5218278f (patch)
tree60165bd248d020974a0be3f5477825876a682445 /src/engine/SCons/Node
parent00c3ada748b164ecf909727fa81f521dde72fda9 (diff)
downloadSCons-2f51f69cf055ec44e37eaac22b1992bd5218278f.zip
SCons-2f51f69cf055ec44e37eaac22b1992bd5218278f.tar.gz
SCons-2f51f69cf055ec44e37eaac22b1992bd5218278f.tar.bz2
Rebuild in response to a changed build command.
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/NodeTests.py11
-rw-r--r--src/engine/SCons/Node/__init__.py17
2 files changed, 28 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 035bc90..24ad955 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -39,6 +39,8 @@ class Builder:
global built_it
built_it = 1
return 0
+ def get_contents(self, env):
+ return 7
class FailBuilder:
def execute(self, **kw):
@@ -89,6 +91,15 @@ class NodeTestCase(unittest.TestCase):
node.builder_set(b)
assert node.builder == b
+ def test_builder_sig_adapter(self):
+ """Test the node's adapter for builder signatures
+ """
+ node = SCons.Node.Node()
+ node.builder_set(Builder())
+ node.env_set(Environment())
+ c = node.builder_sig_adapter().get_contents()
+ assert c == 7, c
+
def test_current(self):
"""Test the default current() method
"""
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 0e1a8d9..513b260 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -79,6 +79,23 @@ class Node:
def builder_set(self, builder):
self.builder = builder
+ def builder_sig_adapter(self):
+ """Create an adapter for calculating a builder's signature.
+
+ The underlying signature class will call get_contents()
+ to fetch the signature of a builder, but the actual
+ content of that signature depends on the node and the
+ environment (for construction variable substitution),
+ so this adapter provides the right glue between the two.
+ """
+ class Adapter:
+ def __init__(self, node):
+ self.node = node
+ def get_contents(self):
+ env = self.node.env.Dictionary()
+ return self.node.builder.get_contents(env = env)
+ return Adapter(self)
+
def env_set(self, env):
self.env = env