diff options
| author | Sjoerd Job Postmus <sjoerdjob@sjec.nl> | 2016-10-20 19:29:04 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-09-20 18:04:42 -0400 |
| commit | df41b5a05d4e00e80e73afe629072e37873e767a (patch) | |
| tree | baaf71ae695e2d3af604ea0d663284cb406c71e4 /tests/check_framework | |
| parent | c4c128d67c7dc2830631c6859a204c9d259f1fb1 (diff) | |
Fixed #28593 -- Added a simplified URL routing syntax per DEP 0201.
Thanks Aymeric Augustin for shepherding the DEP and patch review.
Thanks Marten Kenbeek and Tim Graham for contributing to the code.
Thanks Tom Christie, Shai Berger, and Tim Graham for the docs.
Diffstat (limited to 'tests/check_framework')
| -rw-r--r-- | tests/check_framework/test_urls.py | 43 | ||||
| -rw-r--r-- | tests/check_framework/urls/beginning_with_slash.py | 4 | ||||
| -rw-r--r-- | tests/check_framework/urls/include_contains_tuple.py | 5 |
3 files changed, 36 insertions, 16 deletions
diff --git a/tests/check_framework/test_urls.py b/tests/check_framework/test_urls.py index 07acab599b..5a0d811433 100644 --- a/tests/check_framework/test_urls.py +++ b/tests/check_framework/test_urls.py @@ -32,8 +32,11 @@ class CheckUrlConfigTests(SimpleTestCase): self.assertEqual(len(result), 1) warning = result[0] self.assertEqual(warning.id, 'urls.W001') - expected_msg = "Your URL pattern '^include-with-dollar$' uses include with a regex ending with a '$'." - self.assertIn(expected_msg, warning.msg) + self.assertEqual(warning.msg, ( + "Your URL pattern '^include-with-dollar$' uses include with a " + "route ending with a '$'. Remove the dollar from the route to " + "avoid problems including URLs." + )) @override_settings(ROOT_URLCONF='check_framework.urls.contains_tuple') def test_contains_tuple_not_url_instance(self): @@ -42,23 +45,33 @@ class CheckUrlConfigTests(SimpleTestCase): self.assertEqual(warning.id, 'urls.E004') self.assertRegex(warning.msg, ( r"^Your URL pattern \('\^tuple/\$', <function <lambda> at 0x(\w+)>\) is " - r"invalid. Ensure that urlpatterns is a list of url\(\) instances.$" + r"invalid. Ensure that urlpatterns is a list of path\(\) and/or re_path\(\) " + r"instances\.$" )) - @override_settings(ROOT_URLCONF='check_framework.urls.beginning_with_slash') - def test_beginning_with_slash(self): + @override_settings(ROOT_URLCONF='check_framework.urls.include_contains_tuple') + def test_contains_included_tuple(self): result = check_url_config(None) - self.assertEqual(len(result), 1) warning = result[0] - self.assertEqual(warning.id, 'urls.W002') - expected_msg = ( - "Your URL pattern '/starting-with-slash/$' has a regex beginning " - "with a '/'. Remove this slash as it is unnecessary. If this " - "pattern is targeted in an include(), ensure the include() pattern " - "has a trailing '/'." - ) + self.assertEqual(warning.id, 'urls.E004') + self.assertRegex(warning.msg, ( + r"^Your URL pattern \('\^tuple/\$', <function <lambda> at 0x(\w+)>\) is " + r"invalid. Ensure that urlpatterns is a list of path\(\) and/or re_path\(\) " + r"instances\.$" + )) - self.assertIn(expected_msg, warning.msg) + @override_settings(ROOT_URLCONF='check_framework.urls.beginning_with_slash') + def test_beginning_with_slash(self): + msg = ( + "Your URL pattern '%s' has a route beginning with a '/'. Remove " + "this slash as it is unnecessary. If this pattern is targeted in " + "an include(), ensure the include() pattern has a trailing '/'." + ) + warning1, warning2 = check_url_config(None) + self.assertEqual(warning1.id, 'urls.W002') + self.assertEqual(warning1.msg, msg % '/path-starting-with-slash/') + self.assertEqual(warning2.id, 'urls.W002') + self.assertEqual(warning2.msg, msg % '/url-starting-with-slash/$') @override_settings( ROOT_URLCONF='check_framework.urls.beginning_with_slash', @@ -95,7 +108,7 @@ class CheckUrlConfigTests(SimpleTestCase): def test_get_warning_for_invalid_pattern_tuple(self): warning = get_warning_for_invalid_pattern((r'^$', lambda x: x))[0] - self.assertEqual(warning.hint, "Try using url() instead of a tuple.") + self.assertEqual(warning.hint, "Try using path() instead of a tuple.") def test_get_warning_for_invalid_pattern_other(self): warning = get_warning_for_invalid_pattern(object())[0] diff --git a/tests/check_framework/urls/beginning_with_slash.py b/tests/check_framework/urls/beginning_with_slash.py index 736e91820e..8dac96745c 100644 --- a/tests/check_framework/urls/beginning_with_slash.py +++ b/tests/check_framework/urls/beginning_with_slash.py @@ -1,5 +1,7 @@ from django.conf.urls import url +from django.urls import path urlpatterns = [ - url(r'/starting-with-slash/$', lambda x: x), + path('/path-starting-with-slash/', lambda x: x), + url(r'/url-starting-with-slash/$', lambda x: x), ] diff --git a/tests/check_framework/urls/include_contains_tuple.py b/tests/check_framework/urls/include_contains_tuple.py new file mode 100644 index 0000000000..02717a743c --- /dev/null +++ b/tests/check_framework/urls/include_contains_tuple.py @@ -0,0 +1,5 @@ +from django.urls import include, path + +urlpatterns = [ + path('', include([(r'^tuple/$', lambda x: x)])), +] |
