diff options
| author | Steven Knight <knight@baldmt.com> | 2004-10-20 23:59:50 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-10-20 23:59:50 (GMT) |
| commit | 3e52ca38ff11bf7515dbeb05af362f370479bfb4 (patch) | |
| tree | 831d26e0cdc9a858e043836ee1b1aaefafe5a9ca /src/engine/SCons/Node | |
| parent | 8bafc9f80b4f1d46a32cc2eb7d5200979f465c6c (diff) | |
| download | SCons-3e52ca38ff11bf7515dbeb05af362f370479bfb4.zip SCons-3e52ca38ff11bf7515dbeb05af362f370479bfb4.tar.gz SCons-3e52ca38ff11bf7515dbeb05af362f370479bfb4.tar.bz2 | |
Allow explicit target_factory=Dir with Builders that make a directory to override the default, implicit make-a-directory Builder..
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 1 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 13 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 9 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 2bd68e1..883b82c 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -194,6 +194,7 @@ def get_MkdirBuilder(): MkdirBuilder = SCons.Builder.Builder(action = Mkdir, env = None, explain = None, + is_explicit = None, name = "MkdirBuilder") return MkdirBuilder diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index f8cd62b..ce67781 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -93,10 +93,11 @@ class Environment: self._dict.update(dict) class Builder: - def __init__(self): + def __init__(self, is_explicit=1): self.env = Environment() self.overrides = {} self.action = MyAction() + self.is_explicit = is_explicit def targets(self, t): return [t] def get_actions(self): @@ -314,6 +315,16 @@ class NodeTestCase(unittest.TestCase): n1.builder_set(Builder()) assert n1.has_builder() == 1 + def test_has_explicit_builder(self): + """Test the has_explicit_builder() method + """ + n1 = SCons.Node.Node() + assert not n1.has_explicit_builder() + n1.builder_set(Builder(is_explicit=1)) + assert n1.has_explicit_builder() + n1.builder_set(Builder(is_explicit=None)) + assert not n1.has_explicit_builder() + def test_multiple_side_effect_has_builder(self): """Test the multiple_side_effect_has_builder() method """ diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 338df07..38cff92 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -307,6 +307,15 @@ class Node: b = self.builder return not b is None + def has_explicit_builder(self): + """Return whether this Node has an explicit builder + + This allows an internal Builder created by SCons to be marked + non-explicit, so that it can be overridden by an explicit + builder that the user supplies (the canonical example being + directories).""" + return self.has_builder() and self.builder.is_explicit + multiple_side_effect_has_builder = has_builder def is_derived(self): |
