summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/TaskmasterTests.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-11-28 04:47:15 (GMT)
committerSteven Knight <knight@baldmt.com>2001-11-28 04:47:15 (GMT)
commit6b1cb3d8c409854bbeaa06e61fc70435950f8d39 (patch)
tree51b9c3a9351672b9a6b553d4503c4a668b95459d /src/engine/SCons/TaskmasterTests.py
parentad78319ad3ede8f7065f9c945a3585cad04c3731 (diff)
downloadSCons-6b1cb3d8c409854bbeaa06e61fc70435950f8d39.zip
SCons-6b1cb3d8c409854bbeaa06e61fc70435950f8d39.tar.gz
SCons-6b1cb3d8c409854bbeaa06e61fc70435950f8d39.tar.bz2
Detect dependency cycles
Diffstat (limited to 'src/engine/SCons/TaskmasterTests.py')
-rw-r--r--src/engine/SCons/TaskmasterTests.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py
index 23f2082..ca3037d 100644
--- a/src/engine/SCons/TaskmasterTests.py
+++ b/src/engine/SCons/TaskmasterTests.py
@@ -27,7 +27,7 @@ import sys
import unittest
import SCons.Taskmaster
-
+import SCons.Errors
built = None
@@ -74,7 +74,8 @@ class Node:
and x),
self.children(),
1)
-
+ def __str__(self):
+ return self.name
class TaskmasterTestCase(unittest.TestCase):
@@ -210,7 +211,21 @@ class TaskmasterTestCase(unittest.TestCase):
assert not tm.is_blocked()
t = tm.next_task()
assert tm. next_task() == None
-
+
+ def test_cycle_detection(self):
+ n1 = Node("n1")
+ n2 = Node("n2", [n1])
+ n3 = Node("n3", [n2])
+ n1.kids = [n3]
+ n3.parents.append(n1)
+
+ try:
+ tm = SCons.Taskmaster.Taskmaster([n3])
+ t = tm.next_task()
+ except SCons.Errors.UserError, e:
+ assert str(e) == "Dependency cycle: n3 -> n1 -> n2 -> n3"
+ else:
+ assert 0
def test_is_blocked(self):
"""Test whether a task is blocked