diff options
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): |
