summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-12-17 14:01:28 (GMT)
committerSteven Knight <knight@baldmt.com>2002-12-17 14:01:28 (GMT)
commit72d46ff0afa7d688a2029a74b0a0084dcf439ba5 (patch)
tree82bd4d7ac5f2ad43b3624e4bd51755cf2bd85e4c /src/engine/SCons/Node
parent1f839d9933b456ba4ebb5098ce1f9ab01f398a94 (diff)
downloadSCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.zip
SCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.tar.gz
SCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.tar.bz2
Refactor action execution so it's controlled by the interface-specific Taskmaster.Task class, not Node.build().
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/FS.py4
-rw-r--r--src/engine/SCons/Node/FSTests.py10
-rw-r--r--src/engine/SCons/Node/NodeTests.py10
-rw-r--r--src/engine/SCons/Node/__init__.py4
4 files changed, 28 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index a3ac7be..4ed4664 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -659,6 +659,10 @@ class Dir(Entry):
kids.sort(c)
return kids + SCons.Node.Node.all_children(self, 0)
+ def get_actions(self):
+ """A null "builder" for directories."""
+ return []
+
def build(self):
"""A null "builder" for directories."""
pass
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 8386f83..5917044 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -944,6 +944,15 @@ class prepareTestCase(unittest.TestCase):
exc_caught = 1
assert exc_caught, "Should have caught a StopError."
+class get_actionsTestCase(unittest.TestCase):
+ def runTest(self):
+ """Test the Dir's get_action() method"""
+
+ fs = SCons.Node.FS.FS()
+ dir = fs.Dir('.')
+ a = dir.get_actions()
+ assert a == [], a
+
if __name__ == "__main__":
suite = unittest.TestSuite()
@@ -953,5 +962,6 @@ if __name__ == "__main__":
suite.addTest(find_fileTestCase())
suite.addTest(StringDirTestCase())
suite.addTest(prepareTestCase())
+ suite.addTest(get_actionsTestCase())
if not unittest.TextTestRunner().run(suite).wasSuccessful():
sys.exit(1)
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index cd2d2e3..4054bb9 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -46,6 +46,8 @@ class Builder:
built_source = source
built_args = env
return 0
+ def get_actions(self):
+ return 'xyzzy'
def get_contents(self, target, source, env):
return 7
@@ -242,6 +244,14 @@ class NodeTestCase(unittest.TestCase):
node.env_set(e)
assert node.env == e
+ def test_get_actions(self):
+ """Test fetching a Node's action list
+ """
+ node = SCons.Node.Node()
+ node.builder_set(Builder())
+ a = node.get_actions()
+ assert a == 'xyzzy', a
+
def test_set_bsig(self):
"""Test setting a Node's signature
"""
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 2033663..82dfd7e 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -110,6 +110,10 @@ class Node:
def generate_build_env(self):
return self.env.Override(self.overrides)
+ def get_actions(self):
+ """Fetch the action list to build."""
+ return self.builder.get_actions()
+
def build(self):
"""Actually build the node. Return the status from the build."""
# This method is called from multiple threads in a parallel build,