summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2009-02-28 04:46:38 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2009-02-28 04:46:38 +0000
commitbeb20057a30a96b74dfc309c2add47148103ba63 (patch)
tree6747be928a805729e881db9f0a380dbcc55c3a26
parent415ffa8df56d72bf6f114abc8fdae11d459e768d (diff)
Fixed #10165 -- Use settings.TEST_RUNNER in runtests.py
This permits running Django's core tests under an alternative test runner. Most likely useful to non-CPython implementations, rather than much else (since Django's core tests might assume things about the test runner). Patch from Leo Soto. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9918 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/management/commands/test.py11
-rw-r--r--django/test/utils.py11
-rwxr-xr-xtests/runtests.py8
3 files changed, 19 insertions, 11 deletions
diff --git a/django/core/management/commands/test.py b/django/core/management/commands/test.py
index 3a19a4fcf8..8ebf3daea6 100644
--- a/django/core/management/commands/test.py
+++ b/django/core/management/commands/test.py
@@ -14,18 +14,11 @@ class Command(BaseCommand):
def handle(self, *test_labels, **options):
from django.conf import settings
+ from django.test.utils import get_runner
verbosity = int(options.get('verbosity', 1))
interactive = options.get('interactive', True)
-
- test_path = settings.TEST_RUNNER.split('.')
- # Allow for Python 2.5 relative paths
- if len(test_path) > 1:
- test_module_name = '.'.join(test_path[:-1])
- else:
- test_module_name = '.'
- test_module = __import__(test_module_name, {}, {}, test_path[-1])
- test_runner = getattr(test_module, test_path[-1])
+ test_runner = get_runner(settings)
failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
if failures:
diff --git a/django/test/utils.py b/django/test/utils.py
index 69bd25bc12..29babec3ff 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -65,3 +65,14 @@ def teardown_test_environment():
del mail.outbox
+
+def get_runner(settings):
+ test_path = settings.TEST_RUNNER.split('.')
+ # Allow for Python 2.5 relative paths
+ if len(test_path) > 1:
+ test_module_name = '.'.join(test_path[:-1])
+ else:
+ test_module_name = '.'
+ test_module = __import__(test_module_name, {}, {}, test_path[-1])
+ test_runner = getattr(test_module, test_path[-1])
+ return test_runner
diff --git a/tests/runtests.py b/tests/runtests.py
index cc9594b5fe..bd7f59bdf0 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -149,8 +149,12 @@ def django_tests(verbosity, interactive, test_labels):
pass
# Run the test suite, including the extra validation tests.
- from django.test.simple import run_tests
- failures = run_tests(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests)
+ from django.test.utils import get_runner
+ if not hasattr(settings, 'TEST_RUNNER'):
+ settings.TEST_RUNNER = 'django.test.simple.run_tests'
+ test_runner = get_runner(settings)
+
+ failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests)
if failures:
sys.exit(failures)