summaryrefslogtreecommitdiff
path: root/test/base
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-09-22 19:21:39 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-09-22 19:21:39 -0400
commit127c48252edc2d431a10dbe5b3c3ae77d16ac479 (patch)
tree2bb939ef0a7e6ed870fb29e6cd705d43b2c1fe34 /test/base
parentf0f135b6bd20f7ddcce05711d0185c9c03bf2f41 (diff)
downloadsqlalchemy-127c48252edc2d431a10dbe5b3c3ae77d16ac479.tar.gz
- Fixed bug in unit of work whereby detection of
"cycles" among classes in highly interlinked patterns would not produce a deterministic result; thereby sometimes missing some nodes that should be considered cycles and causing further issues down the road. Note this bug is in 0.6 also; not backported at the moment. [ticket:2282]
Diffstat (limited to 'test/base')
-rw-r--r--test/base/test_dependency.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/test/base/test_dependency.py b/test/base/test_dependency.py
index 85347ad91..4be3c8390 100644
--- a/test/base/test_dependency.py
+++ b/test/base/test_dependency.py
@@ -222,8 +222,11 @@ class DependencySortTest(fixtures.TestBase):
node5,
node6,
])
- eq_(topological.find_cycles(tuples, allnodes), set(['node1',
- 'node2', 'node4']))
+ # node6 only became present here once [ticket:2282] was addressed.
+ eq_(
+ topological.find_cycles(tuples, allnodes),
+ set(['node1','node2', 'node4', 'node6'])
+ )
def test_find_multiple_cycles_three(self):
node1 = 'node1'
@@ -252,3 +255,26 @@ class DependencySortTest(fixtures.TestBase):
node6,
])
eq_(topological.find_cycles(tuples, allnodes), allnodes)
+
+ def test_find_multiple_cycles_four(self):
+ tuples = [
+ ('node6', 'node2'),
+ ('node15', 'node19'),
+ ('node19', 'node2'), ('node4', 'node10'),
+ ('node15', 'node13'),
+ ('node17', 'node11'), ('node1', 'node19'), ('node15', 'node8'),
+ ('node6', 'node20'), ('node14', 'node11'), ('node6', 'node14'),
+ ('node11', 'node2'), ('node10', 'node20'), ('node1', 'node11'),
+ ('node20', 'node19'), ('node4', 'node20'), ('node15', 'node20'),
+ ('node9', 'node19'), ('node11', 'node10'), ('node11', 'node19'),
+ ('node13', 'node6'), ('node3', 'node15'), ('node9', 'node11'),
+ ('node4', 'node17'), ('node2', 'node20'), ('node19', 'node10'),
+ ('node8', 'node4'), ('node11', 'node3'), ('node6', 'node1')
+ ]
+ allnodes = ['node%d' % i for i in xrange(1, 21)]
+ eq_(
+ topological.find_cycles(tuples, allnodes),
+ set(['node11', 'node10', 'node13', 'node15', 'node14', 'node17',
+ 'node19', 'node20', 'node8', 'node1', 'node3',
+ 'node2', 'node4', 'node6'])
+ )