mirror of
https://github.com/django/django.git
synced 2025-10-25 22:56:12 +00:00
[1.2.X] Fixed #14799 -- Provided a full solution for test database creation order problems.
Backport of r14822, r14823 and r14824 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14825 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -4,6 +4,7 @@ Tests for django test runner
|
||||
import StringIO
|
||||
import unittest
|
||||
import django
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.test import simple
|
||||
|
||||
class DjangoTestRunnerTests(unittest.TestCase):
|
||||
@@ -27,3 +28,93 @@ class DjangoTestRunnerTests(unittest.TestCase):
|
||||
result = dtr.run(suite)
|
||||
self.assertEqual(1, result.testsRun)
|
||||
self.assertEqual(1, len(result.failures))
|
||||
|
||||
class DependencyOrderingTests(unittest.TestCase):
|
||||
|
||||
def test_simple_dependencies(self):
|
||||
raw = [
|
||||
('s1', ['alpha']),
|
||||
('s2', ['bravo']),
|
||||
('s3', ['charlie']),
|
||||
]
|
||||
dependencies = {
|
||||
'alpha': ['charlie'],
|
||||
'bravo': ['charlie'],
|
||||
}
|
||||
|
||||
ordered = simple.dependency_ordered(raw, dependencies=dependencies)
|
||||
ordered_sigs = [sig for sig,aliases in ordered]
|
||||
|
||||
self.assertIn('s1', ordered_sigs)
|
||||
self.assertIn('s2', ordered_sigs)
|
||||
self.assertIn('s3', ordered_sigs)
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
||||
|
||||
def test_chained_dependencies(self):
|
||||
raw = [
|
||||
('s1', ['alpha']),
|
||||
('s2', ['bravo']),
|
||||
('s3', ['charlie']),
|
||||
]
|
||||
dependencies = {
|
||||
'alpha': ['bravo'],
|
||||
'bravo': ['charlie'],
|
||||
}
|
||||
|
||||
ordered = simple.dependency_ordered(raw, dependencies=dependencies)
|
||||
ordered_sigs = [sig for sig,aliases in ordered]
|
||||
|
||||
self.assertIn('s1', ordered_sigs)
|
||||
self.assertIn('s2', ordered_sigs)
|
||||
self.assertIn('s3', ordered_sigs)
|
||||
|
||||
# Explicit dependencies
|
||||
self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
||||
|
||||
# Implied dependencies
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
||||
|
||||
def test_multiple_dependencies(self):
|
||||
raw = [
|
||||
('s1', ['alpha']),
|
||||
('s2', ['bravo']),
|
||||
('s3', ['charlie']),
|
||||
('s4', ['delta']),
|
||||
]
|
||||
dependencies = {
|
||||
'alpha': ['bravo','delta'],
|
||||
'bravo': ['charlie'],
|
||||
'delta': ['charlie'],
|
||||
}
|
||||
|
||||
ordered = simple.dependency_ordered(raw, dependencies=dependencies)
|
||||
ordered_sigs = [sig for sig,aliases in ordered]
|
||||
|
||||
self.assertIn('s1', ordered_sigs)
|
||||
self.assertIn('s2', ordered_sigs)
|
||||
self.assertIn('s3', ordered_sigs)
|
||||
self.assertIn('s4', ordered_sigs)
|
||||
|
||||
# Explicit dependencies
|
||||
self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))
|
||||
self.assertLess(ordered_sigs.index('s4'), ordered_sigs.index('s1'))
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s4'))
|
||||
|
||||
# Implicit dependencies
|
||||
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
||||
|
||||
def test_circular_dependencies(self):
|
||||
raw = [
|
||||
('s1', ['alpha']),
|
||||
('s2', ['bravo']),
|
||||
]
|
||||
dependencies = {
|
||||
'bravo': ['alpha'],
|
||||
'alpha': ['bravo'],
|
||||
}
|
||||
|
||||
self.assertRaises(ImproperlyConfigured, simple.dependency_ordered, raw, dependencies=dependencies)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user