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
This commit is contained in:
parent
415ffa8df5
commit
beb20057a3
|
@ -14,18 +14,11 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
def handle(self, *test_labels, **options):
|
def handle(self, *test_labels, **options):
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.test.utils import get_runner
|
||||||
|
|
||||||
verbosity = int(options.get('verbosity', 1))
|
verbosity = int(options.get('verbosity', 1))
|
||||||
interactive = options.get('interactive', True)
|
interactive = options.get('interactive', True)
|
||||||
|
test_runner = 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])
|
|
||||||
|
|
||||||
failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
|
failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
|
||||||
if failures:
|
if failures:
|
||||||
|
|
|
@ -65,3 +65,14 @@ def teardown_test_environment():
|
||||||
|
|
||||||
del mail.outbox
|
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
|
||||||
|
|
|
@ -149,8 +149,12 @@ def django_tests(verbosity, interactive, test_labels):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Run the test suite, including the extra validation tests.
|
# Run the test suite, including the extra validation tests.
|
||||||
from django.test.simple import run_tests
|
from django.test.utils import get_runner
|
||||||
failures = run_tests(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests)
|
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:
|
if failures:
|
||||||
sys.exit(failures)
|
sys.exit(failures)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue