From 41848b078a2f0402b23043da7cfb517d0a194aa3 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 16 Feb 2013 13:26:36 +0100 Subject: [PATCH] [1.5.x] Fixed #19833 -- Fixed import parameter encoding in get_runner Thanks Danilo Bargen for the report. Backport of 63236161 from master. --- 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 8114ae0e6a..bd17e1303b 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__ = ( @@ -126,7 +127,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 = (