summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-12-27 15:59:13 -0500
committerGitHub <noreply@github.com>2016-12-27 15:59:13 -0500
commit51cde873d9fc8e4540f4efecbd39cfe8e770be38 (patch)
tree6ceaf250f599a9e108f6b75b74a8f5b4e06bd08b /tests
parent544b2ef29f0f2577912f88cf746ae0ca5877b5f8 (diff)
Fixed #27648 -- Deprecated (iLmsu) regex groups in url() patterns.
Diffstat (limited to 'tests')
-rw-r--r--tests/urlpatterns_reverse/test_deprecated.py33
-rw-r--r--tests/urlpatterns_reverse/tests.py2
-rw-r--r--tests/urlpatterns_reverse/urls.py2
-rw-r--r--tests/utils_tests/test_regex_helper.py7
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)"