diff options
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 |
