summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-06 09:32:51 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-06 09:33:45 +0100
commite986e49e66c23c26012749e1a134cba1d6d0bfdd (patch)
treea4fc936f764a24e06be15915ce194fe4eff8156b /tests
parent6ede5a3cb7ae92d6d8fdbd71805fb4742c672dd9 (diff)
[3.0.x] Fixed #31061 -- Ignored positional args in django.urls.resolve() when all optional named parameters are missing.
Regression in 76b993a117b61c41584e95149a67d8a1e9f49dd1. Thanks Claude Paroz for the report and Carlton Gibson for reviews. Backport of 82a88d2f48e13ef5d472741d5ed1c183230cfe4c from master
Diffstat (limited to 'tests')
-rw-r--r--tests/urlpatterns/path_urls.py5
-rw-r--r--tests/urlpatterns/tests.py10
2 files changed, 15 insertions, 0 deletions
diff --git a/tests/urlpatterns/path_urls.py b/tests/urlpatterns/path_urls.py
index b40801b39d..afc15f30af 100644
--- a/tests/urlpatterns/path_urls.py
+++ b/tests/urlpatterns/path_urls.py
@@ -12,6 +12,11 @@ urlpatterns = [
path('included_urls/', include('urlpatterns.included_urls')),
re_path(r'^regex/(?P<pk>[0-9]+)/$', views.empty_view, name='regex'),
re_path(r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?', views.empty_view, name='regex_optional'),
+ re_path(
+ r'^regex_only_optional/(?:(?P<arg1>\d+)/)?',
+ views.empty_view,
+ name='regex_only_optional',
+ ),
path('', include('urlpatterns.more_urls')),
path('<lang>/<path:url>/', views.empty_view, name='lang-and-path'),
]
diff --git a/tests/urlpatterns/tests.py b/tests/urlpatterns/tests.py
index 92c4e6399e..b149e0d512 100644
--- a/tests/urlpatterns/tests.py
+++ b/tests/urlpatterns/tests.py
@@ -68,6 +68,16 @@ class SimplifiedURLTests(SimpleTestCase):
r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?',
)
+ def test_re_path_with_missing_optional_parameter(self):
+ match = resolve('/regex_only_optional/')
+ self.assertEqual(match.url_name, 'regex_only_optional')
+ self.assertEqual(match.kwargs, {})
+ self.assertEqual(match.args, ())
+ self.assertEqual(
+ match.route,
+ r'^regex_only_optional/(?:(?P<arg1>\d+)/)?',
+ )
+
def test_path_lookup_with_inclusion(self):
match = resolve('/included_urls/extra/something/')
self.assertEqual(match.url_name, 'inner-extra')