diff options
| author | Loic Bistuer <loic.bistuer@gmail.com> | 2014-05-04 21:29:49 +0700 |
|---|---|---|
| committer | Loic Bistuer <loic.bistuer@gmail.com> | 2014-05-05 19:29:27 +0700 |
| commit | 942556df2ffd3276dc127edd3cbb9d177095d882 (patch) | |
| tree | 007b2f89628d9de774a56a17f1171f88a85facc2 /tests/test_utils/tests.py | |
| parent | 3b7c66a3ac0fcaa5dd02f87888c787d2c735c1a7 (diff) | |
Fixed #22572 -- override_settings(ROOT_URLCONF) didn't clear urlresolvers._urlconfs.
Thanks Anubhav Joshi and Tim Graham for the reviews.
Diffstat (limited to 'tests/test_utils/tests.py')
| -rw-r--r-- | tests/test_utils/tests.py | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py index 1465c2be71..b2e4207fa5 100644 --- a/tests/test_utils/tests.py +++ b/tests/test_utils/tests.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import unittest from django.conf.urls import url -from django.core.urlresolvers import reverse +from django.core.urlresolvers import NoReverseMatch, reverse from django.db import connection from django.forms import EmailField, IntegerField from django.http import HttpResponse @@ -15,6 +15,7 @@ from django.test.utils import CaptureQueriesContext, override_settings from django.utils import six from .models import Person +from .views import empty_response class SkippingTestCase(TestCase): @@ -667,30 +668,42 @@ class AssertFieldOutputTests(SimpleTestCase): self.assertFieldOutput(MyCustomField, {}, {}, empty_value=None) -# for OverrideSettingsTests -def fake_view(request): - pass - - class FirstUrls: - urlpatterns = [url(r'first/$', fake_view, name='first')] + urlpatterns = [url(r'first/$', empty_response, name='first')] class SecondUrls: - urlpatterns = [url(r'second/$', fake_view, name='second')] + urlpatterns = [url(r'second/$', empty_response, name='second')] class OverrideSettingsTests(TestCase): - """ - #21518 -- If neither override_settings nor a settings_changed receiver - clears the URL cache between tests, then one of these two test methods will - fail. - """ + + # #21518 -- If neither override_settings nor a settings_changed receiver + # clears the URL cache between tests, then one of test_first or + # test_second will fail. @override_settings(ROOT_URLCONF=FirstUrls) - def test_first(self): + def test_urlconf_first(self): reverse('first') @override_settings(ROOT_URLCONF=SecondUrls) - def test_second(self): + def test_urlconf_second(self): reverse('second') + + def test_urlconf_cache(self): + self.assertRaises(NoReverseMatch, lambda: reverse('first')) + self.assertRaises(NoReverseMatch, lambda: reverse('second')) + + with override_settings(ROOT_URLCONF=FirstUrls): + self.client.get(reverse('first')) + self.assertRaises(NoReverseMatch, lambda: reverse('second')) + + with override_settings(ROOT_URLCONF=SecondUrls): + self.assertRaises(NoReverseMatch, lambda: reverse('first')) + self.client.get(reverse('second')) + + self.client.get(reverse('first')) + self.assertRaises(NoReverseMatch, lambda: reverse('second')) + + self.assertRaises(NoReverseMatch, lambda: reverse('first')) + self.assertRaises(NoReverseMatch, lambda: reverse('second')) |
