diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-09-22 19:21:39 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-09-22 19:21:39 -0400 |
| commit | 127c48252edc2d431a10dbe5b3c3ae77d16ac479 (patch) | |
| tree | 2bb939ef0a7e6ed870fb29e6cd705d43b2c1fe34 /test/base | |
| parent | f0f135b6bd20f7ddcce05711d0185c9c03bf2f41 (diff) | |
| download | sqlalchemy-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.py | 30 |
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']) + ) |
