From 5a85f2ca5fc3c4292cd1b147198d75d0f141fd71 Mon Sep 17 00:00:00 2001 From: Chris Lamb Date: Sat, 25 Feb 2017 02:58:56 +0800 Subject: [PATCH] [1.11.x] Fixed #27873 -- Fixed crash in setup_test_environment() if ALLOWED_HOSTS is a tuple. Regression in 17e661641ddaf8266e7430d83cfb2039abc55df7 Backport of 339d526d55baffea3bd3cecd0e07ddf644028e8c from master --- django/test/utils.py | 2 +- tests/test_utils/tests.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/django/test/utils.py b/django/test/utils.py index b24f2e8c80d..9d4cc46a989 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -131,7 +131,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 54b83f524b0..f118ec95653 100644 --- a/tests/test_utils/tests.py +++ b/tests/test_utils/tests.py @@ -5,6 +5,7 @@ import sys import unittest import warnings +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 @@ -14,7 +15,7 @@ from django.forms import EmailField, IntegerField from django.http import HttpResponse from django.template.loader import render_to_string from django.test import ( - SimpleTestCase, TestCase, ignore_warnings, skipIfDBFeature, + SimpleTestCase, TestCase, ignore_warnings, mock, skipIfDBFeature, skipUnlessDBFeature, ) from django.test.html import HTMLParseError, parse_html @@ -885,6 +886,15 @@ 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): + 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):