diff options
| author | Steven Knight <knight@baldmt.com> | 2002-02-18 22:34:59 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2002-02-18 22:34:59 (GMT) |
| commit | 2db9879e1b4671c412b50a8a3c67eda1c6c95d93 (patch) | |
| tree | 7d249871746d7775d3da397778778f0ffbea3308 /src/engine/SCons/TaskmasterTests.py | |
| parent | c71fa63caaa49aeeb7753a28a630d0d8de7e5606 (diff) | |
| download | SCons-2db9879e1b4671c412b50a8a3c67eda1c6c95d93.zip SCons-2db9879e1b4671c412b50a8a3c67eda1c6c95d93.tar.gz SCons-2db9879e1b4671c412b50a8a3c67eda1c6c95d93.tar.bz2 | |
Efficiency: On the Taskmaster's Walker's out-of-date checks, don't return any children if the node itself has already been visited.
Diffstat (limited to 'src/engine/SCons/TaskmasterTests.py')
| -rw-r--r-- | src/engine/SCons/TaskmasterTests.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py index 0d7a7ad..32a1110 100644 --- a/src/engine/SCons/TaskmasterTests.py +++ b/src/engine/SCons/TaskmasterTests.py @@ -32,6 +32,7 @@ import SCons.Errors built = None executed = None +scan_called = 0 class Node: def __init__(self, name, kids = [], scans = []): @@ -58,6 +59,8 @@ class Node: return self.kids def scan(self): + global scan_called + scan_called = scan_called + 1 self.kids = self.kids + self.scans for scan in self.scans: scan.parents.append(self) @@ -240,6 +243,36 @@ class TaskmasterTestCase(unittest.TestCase): assert t.get_target() == n3 t.executed() assert tm.next_task() == None + + n1 = Node("n1") + n2 = Node("n2") + n3 = Node("n3", [n1, n2]) + n4 = Node("n4", [n3]) + n5 = Node("n5", [n3]) + global scan_called + scan_called = 0 + tm = SCons.Taskmaster.Taskmaster([n4]) + t = tm.next_task() + assert t.get_target() == n1 + t.executed() + t = tm.next_task() + assert t.get_target() == n2 + t.executed() + t = tm.next_task() + assert t.get_target() == n3 + t.executed() + t = tm.next_task() + assert t.get_target() == n4 + t.executed() + assert tm.next_task() == None + assert scan_called == 4, scan_called + + tm = SCons.Taskmaster.Taskmaster([n5]) + t = tm.next_task() + assert t.get_target() == n5, t.get_target() + t.executed() + assert tm.next_task() == None + assert scan_called == 5, scan_called def test_cycle_detection(self): n1 = Node("n1") |
