From 42ee4d4c6c6e24483c86f7b70a51348ca13d23d7 Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Sat, 6 Dec 2003 14:02:46 +0000 Subject: Prepare side-effect nodes before building, too. (Charles Crain) --- src/CHANGES.txt | 3 +++ src/engine/SCons/Taskmaster.py | 2 ++ src/engine/SCons/TaskmasterTests.py | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index c9a4ad6..b95cfc0 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -43,6 +43,9 @@ RELEASE 0.95 - XXX values. Previously, SCons would only use the values if all three were set in the registry. + - Make sure side-effect nodes are prepare()d before building their + corresponding target. + From Scott Lystig Fritchie: - Fix the ability to use a custom _concat() function in the diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index b269fa2..90d1452 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -81,6 +81,8 @@ class Task: for t in self.targets: t.prepare() + for s in t.side_effects: + s.prepare() def execute(self): """Called to execute the task. diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py index fd21891..019611a 100644 --- a/src/engine/SCons/TaskmasterTests.py +++ b/src/engine/SCons/TaskmasterTests.py @@ -627,6 +627,28 @@ class TaskmasterTestCase(unittest.TestCase): assert str(e) == "exception value", e assert built_text is None, built_text + # Regression test, make sure we prepare not only + # all targets, but their side effects as well. + n6 = Node("n6") + n7 = Node("n7") + n8 = Node("n8") + n9 = Node("n9") + n10 = Node("n10") + + n6.side_effects = [ n8 ] + n7.side_effects = [ n9, n10 ] + + tm = SCons.Taskmaster.Taskmaster([n6, n7]) + t = tm.next_task() + # More bogus reaching in and setting the targets. + t.targets = [n6, n7] + t.prepare() + assert n6.prepared + assert n7.prepared + assert n8.prepared + assert n9.prepared + assert n10.prepared + def test_execute(self): """Test executing a task -- cgit v0.12