diff options
| author | Tim Graham <timograham@gmail.com> | 2016-12-27 15:59:13 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-27 15:59:13 -0500 |
| commit | 51cde873d9fc8e4540f4efecbd39cfe8e770be38 (patch) | |
| tree | 6ceaf250f599a9e108f6b75b74a8f5b4e06bd08b /tests | |
| parent | 544b2ef29f0f2577912f88cf746ae0ca5877b5f8 (diff) | |
Fixed #27648 -- Deprecated (iLmsu) regex groups in url() patterns.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/urlpatterns_reverse/test_deprecated.py | 33 | ||||
| -rw-r--r-- | tests/urlpatterns_reverse/tests.py | 2 | ||||
| -rw-r--r-- | tests/urlpatterns_reverse/urls.py | 2 | ||||
| -rw-r--r-- | tests/utils_tests/test_regex_helper.py | 7 |
4 files changed, 39 insertions, 5 deletions
diff --git a/tests/urlpatterns_reverse/test_deprecated.py b/tests/urlpatterns_reverse/test_deprecated.py new file mode 100644 index 0000000000..c918dd5a17 --- /dev/null +++ b/tests/urlpatterns_reverse/test_deprecated.py @@ -0,0 +1,33 @@ +import warnings + +from django.conf.urls import url +from django.test import SimpleTestCase, override_settings +from django.urls import reverse + +from .views import empty_view + +urlpatterns = [ + url(r'^(?i)CaseInsensitive/(\w+)', empty_view, name="insensitive"), + url(r'^(?i)test/2/?$', empty_view, name="test2"), +] + + +@override_settings(ROOT_URLCONF='urlpatterns_reverse.test_deprecated') +class URLPatternReverse(SimpleTestCase): + + def test_urlpattern_reverse(self): + test_data = ( + ('insensitive', '/CaseInsensitive/fred', ['fred'], {}), + ('test2', '/test/2', [], {}), + ) + with warnings.catch_warnings(record=True) as warns: + warnings.simplefilter('always') + warnings.filterwarnings( + 'ignore', 'Flags not at the start', + DeprecationWarning, module='django.urls.resolvers' + ) + for i, (name, expected, args, kwargs) in enumerate(test_data): + got = reverse(name, args=args, kwargs=kwargs) + self.assertEqual(got, expected) + msg = str(warns[i].message) + self.assertEqual(msg, 'Using (?i) in url() patterns is deprecated.') diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py index 4b31e382e1..b02898e345 100644 --- a/tests/urlpatterns_reverse/tests.py +++ b/tests/urlpatterns_reverse/tests.py @@ -198,9 +198,7 @@ test_data = ( ('repeats', '/repeats/a/', [], {}), ('repeats2', '/repeats/aa/', [], {}), ('repeats3', '/repeats/aa/', [], {}), - ('insensitive', '/CaseInsensitive/fred', ['fred'], {}), ('test', '/test/1', [], {}), - ('test2', '/test/2', [], {}), ('inner-nothing', '/outer/42/', [], {'outer': '42'}), ('inner-nothing', '/outer/42/', ['42'], {}), ('inner-nothing', NoReverseMatch, ['foo'], {}), diff --git a/tests/urlpatterns_reverse/urls.py b/tests/urlpatterns_reverse/urls.py index 35e2ff707c..731c97146b 100644 --- a/tests/urlpatterns_reverse/urls.py +++ b/tests/urlpatterns_reverse/urls.py @@ -49,9 +49,7 @@ urlpatterns = [ url(r'^repeats/a{1,2}/$', empty_view, name="repeats"), url(r'^repeats/a{2,4}/$', empty_view, name="repeats2"), url(r'^repeats/a{2}/$', empty_view, name="repeats3"), - url(r'^(?i)CaseInsensitive/(\w+)', empty_view, name="insensitive"), url(r'^test/1/?', empty_view, name="test"), - url(r'^(?i)test/2/?$', empty_view, name="test2"), url(r'^outer/(?P<outer>[0-9]+)/', include('urlpatterns_reverse.included_urls')), url(r'^outer-no-kwargs/([0-9]+)/', include('urlpatterns_reverse.included_no_kwargs_urls')), url('', include('urlpatterns_reverse.extra_urls')), diff --git a/tests/utils_tests/test_regex_helper.py b/tests/utils_tests/test_regex_helper.py index 055da89ee0..f91fd1cec7 100644 --- a/tests/utils_tests/test_regex_helper.py +++ b/tests/utils_tests/test_regex_helper.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import unittest +import warnings from django.utils import regex_helper @@ -27,8 +28,12 @@ class NormalizeTests(unittest.TestCase): def test_group_ignored(self): pattern = r"(?i)(?L)(?m)(?s)(?u)(?#)" expected = [('', [])] - result = regex_helper.normalize(pattern) + with warnings.catch_warnings(record=True) as warns: + warnings.simplefilter('always') + result = regex_helper.normalize(pattern) self.assertEqual(result, expected) + for i, char in enumerate('iLmsu#'): + self.assertEqual(str(warns[i].message), 'Using (?%s) in url() patterns is deprecated.' % char) def test_group_noncapturing(self): pattern = r"(?:non-capturing)" |
