diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-09-27 06:14:11 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-09-27 06:14:11 +0000 |
| commit | 15b0158e393544bd215688f257ab03604cd07950 (patch) | |
| tree | f7ce549cc825a60160c6d2541579862c578f7d73 /tests/regressiontests/urlpatterns_reverse | |
| parent | 6c7cf34d691ffe9ac2c9a7be8d2838b205ace757 (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.py | 11 | ||||
| -rw-r--r-- | tests/regressiontests/urlpatterns_reverse/urls.py | 9 | ||||
| -rw-r--r-- | tests/regressiontests/urlpatterns_reverse/views.py | 6 |
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 |
