From 339d526d55baffea3bd3cecd0e07ddf644028e8c Mon Sep 17 00:00:00 2001 From: Chris Lamb Date: Sat, 25 Feb 2017 02:58:56 +0800 Subject: [PATCH] Fixed #27873 -- Fixed crash in setup_test_environment() if ALLOWED_HOSTS is a tuple. Regression in 17e661641ddaf8266e7430d83cfb2039abc55df7 --- django/test/utils.py | 2 +- tests/test_utils/tests.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/django/test/utils.py b/django/test/utils.py index 5c374c22925..88158e89d68 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -124,7 +124,7 @@ def setup_test_environment(debug=None): saved_data.allowed_hosts = settings.ALLOWED_HOSTS # Add the default host of the test client. - settings.ALLOWED_HOSTS = settings.ALLOWED_HOSTS + ['testserver'] + settings.ALLOWED_HOSTS = list(settings.ALLOWED_HOSTS) + ['testserver'] saved_data.debug = settings.DEBUG settings.DEBUG = debug diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py index 19ef4058526..c37928bcaa0 100644 --- a/tests/test_utils/tests.py +++ b/tests/test_utils/tests.py @@ -2,7 +2,9 @@ import os import sys import unittest from io import StringIO +from unittest import mock +from django.conf import settings from django.conf.urls import url from django.contrib.staticfiles.finders import get_finder, get_finders from django.contrib.staticfiles.storage import staticfiles_storage @@ -866,6 +868,16 @@ class SetupTestEnvironmentTests(SimpleTestCase): with self.assertRaisesMessage(RuntimeError, "setup_test_environment() was already called"): setup_test_environment() + def test_allowed_hosts(self): + for type_ in (list, tuple): + with self.subTest(type_=type_): + allowed_hosts = type_('*') + with mock.patch('django.test.utils._TestState') as x: + del x.saved_data + with self.settings(ALLOWED_HOSTS=allowed_hosts): + setup_test_environment() + self.assertEqual(settings.ALLOWED_HOSTS, ['*', 'testserver']) + class OverrideSettingsTests(SimpleTestCase):