From 632361611c6386696dc525ad3aecf065e6ed98ee Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 16 Feb 2013 13:26:36 +0100 Subject: [PATCH] Fixed #19833 -- Fixed import parameter encoding in get_runner Thanks Danilo Bargen for the report. --- django/test/utils.py | 7 ++++--- tests/regressiontests/test_runner/tests.py | 7 ++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/django/test/utils.py b/django/test/utils.py index 9413ea8dc4..a8ed3d6317 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -4,12 +4,13 @@ from xml.dom.minidom import parseString, Node from django.conf import settings, UserSettingsHolder from django.core import mail -from django.test.signals import template_rendered, setting_changed from django.template import Template, loader, TemplateDoesNotExist from django.template.loaders import cached -from django.utils.translation import deactivate +from django.test.signals import template_rendered, setting_changed +from django.utils.encoding import force_str from django.utils.functional import wraps from django.utils import six +from django.utils.translation import deactivate __all__ = ( @@ -133,7 +134,7 @@ def get_runner(settings, test_runner_class=None): test_module_name = '.'.join(test_path[:-1]) else: test_module_name = '.' - test_module = __import__(test_module_name, {}, {}, test_path[-1]) + test_module = __import__(test_module_name, {}, {}, force_str(test_path[-1])) test_runner = getattr(test_module, test_path[-1]) return test_runner diff --git a/tests/regressiontests/test_runner/tests.py b/tests/regressiontests/test_runner/tests.py index 93eabf74e3..5df421c54b 100644 --- a/tests/regressiontests/test_runner/tests.py +++ b/tests/regressiontests/test_runner/tests.py @@ -1,7 +1,7 @@ """ Tests for django test runner """ -from __future__ import absolute_import +from __future__ import absolute_import, unicode_literals import sys from optparse import make_option @@ -150,6 +150,11 @@ class ManageCommandTests(unittest.TestCase): self.assertTrue(MockTestRunner.invoked, "The custom test runner has not been invoked") + def test_bad_test_runner(self): + with self.assertRaises(AttributeError): + call_command('test', 'sites', + testrunner='regressiontests.test_runner.NonExistentRunner') + class CustomOptionsTestRunner(simple.DjangoTestSuiteRunner): option_list = (