diff options
| author | Steven Knight <knight@baldmt.com> | 2001-11-02 03:12:07 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2001-11-02 03:12:07 (GMT) |
| commit | 2f51f69cf055ec44e37eaac22b1992bd5218278f (patch) | |
| tree | 60165bd248d020974a0be3f5477825876a682445 /src/engine/SCons/Node | |
| parent | 00c3ada748b164ecf909727fa81f521dde72fda9 (diff) | |
| download | SCons-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.py | 11 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 17 |
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 |
