summaryrefslogtreecommitdiff
path: root/tests/regressiontests/urlpatterns_reverse
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/urlpatterns_reverse')
-rw-r--r--tests/regressiontests/urlpatterns_reverse/tests.py11
-rw-r--r--tests/regressiontests/urlpatterns_reverse/urls.py9
-rw-r--r--tests/regressiontests/urlpatterns_reverse/views.py6
3 files changed, 25 insertions, 1 deletions
diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py
index f743af36dd..6ccf1443dc 100644
--- a/tests/regressiontests/urlpatterns_reverse/tests.py
+++ b/tests/regressiontests/urlpatterns_reverse/tests.py
@@ -65,6 +65,17 @@ test_data = (
('extra-places', '/e-places/10/', ['10'], {}),
('extra-people', '/e-people/fred/', ['fred'], {}),
('extra-people', '/e-people/fred/', [], {'name': 'fred'}),
+
+ # Regression for #9038
+ # These views are resolved by method name. Each method is deployed twice -
+ # once with an explicit argument, and once using the default value on
+ # the method. This is potentially ambiguous, as you have to pick the
+ # correct view for the arguments provided.
+ ('kwargs_view', '/arg_view/', [], {}),
+ ('kwargs_view', '/arg_view/10/', [], {'arg1':10}),
+ ('regressiontests.urlpatterns_reverse.views.absolute_kwargs_view', '/absolute_arg_view/', [], {}),
+ ('regressiontests.urlpatterns_reverse.views.absolute_kwargs_view', '/absolute_arg_view/10/', [], {'arg1':10}),
+
)
class URLPatternReverse(TestCase):
diff --git a/tests/regressiontests/urlpatterns_reverse/urls.py b/tests/regressiontests/urlpatterns_reverse/urls.py
index 0f66346337..b3aed4f22d 100644
--- a/tests/regressiontests/urlpatterns_reverse/urls.py
+++ b/tests/regressiontests/urlpatterns_reverse/urls.py
@@ -1,5 +1,5 @@
from django.conf.urls.defaults import *
-from views import empty_view
+from views import empty_view, absolute_kwargs_view
urlpatterns = patterns('',
url(r'^places/(\d+)/$', empty_view, name='places'),
@@ -45,4 +45,11 @@ urlpatterns = patterns('',
# This is non-reversible, but we shouldn't blow up when parsing it.
url(r'^(?:foo|bar)(\w+)/$', empty_view, name="disjunction"),
+
+ # Regression views for #9038. See tests for more details
+ url(r'arg_view/$', 'kwargs_view'),
+ url(r'arg_view/(?P<arg1>\d+)/$', 'kwargs_view'),
+ url(r'absolute_arg_view/(?P<arg1>\d+)/$', absolute_kwargs_view),
+ url(r'absolute_arg_view/$', absolute_kwargs_view),
+
)
diff --git a/tests/regressiontests/urlpatterns_reverse/views.py b/tests/regressiontests/urlpatterns_reverse/views.py
index 65be705023..99c00bde70 100644
--- a/tests/regressiontests/urlpatterns_reverse/views.py
+++ b/tests/regressiontests/urlpatterns_reverse/views.py
@@ -1,2 +1,8 @@
def empty_view(request, *args, **kwargs):
pass
+
+def kwargs_view(request, arg1=1, arg2=2):
+ pass
+
+def absolute_kwargs_view(request, arg1=1, arg2=2):
+ pass