summaryrefslogtreecommitdiff
path: root/tests/regressiontests/urlpatterns_reverse
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-09-27 06:14:11 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-09-27 06:14:11 +0000
commit15b0158e393544bd215688f257ab03604cd07950 (patch)
treef7ce549cc825a60160c6d2541579862c578f7d73 /tests/regressiontests/urlpatterns_reverse
parent6c7cf34d691ffe9ac2c9a7be8d2838b205ace757 (diff)
Fixed #9038 -- Correctly handle URL patterns with the same name (or view name),
declared independently and that differ only by argument signatures. Patch from Russell Keith-Magee. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9087 bcc190cf-cafb-0310-a4f2-bffc1f526a37
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