summaryrefslogtreecommitdiff
path: root/tests/urlpatterns_reverse
diff options
context:
space:
mode:
Diffstat (limited to 'tests/urlpatterns_reverse')
-rw-r--r--tests/urlpatterns_reverse/tests.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py
index 7d08cd21e9..fa553fc6eb 100644
--- a/tests/urlpatterns_reverse/tests.py
+++ b/tests/urlpatterns_reverse/tests.py
@@ -202,17 +202,24 @@ class URLPatternReverse(TestCase):
reverse('non_path_include', prefix='/{{invalid}}/'))
def test_prefix_parenthesis(self):
- self.assertEqual('/bogus%29/includes/non_path_include/',
- reverse('non_path_include', prefix='/bogus)/'))
+ # Parentheses are allowed and should not cause errors or be escaped
+ self.assertEqual(
+ '/bogus)/includes/non_path_include/',
+ reverse('non_path_include', prefix='/bogus)/')
+ )
+ self.assertEqual(
+ '/(bogus)/includes/non_path_include/',
+ reverse('non_path_include', prefix='/(bogus)/')
+ )
def test_prefix_format_char(self):
self.assertEqual('/bump%2520map/includes/non_path_include/',
reverse('non_path_include', prefix='/bump%20map/'))
def test_non_urlsafe_prefix_with_args(self):
- # Regression for #20022
- self.assertEqual('/%7Eme/places/1/',
- reverse('places', args=[1], prefix='/~me/'))
+ # Regression for #20022, adjusted for #24013 because ~ is an unreserved
+ # character. Tests whether % is escaped.
+ self.assertEqual('/%257Eme/places/1/', reverse('places', args=[1], prefix='/%7Eme/'))
def test_patterns_reported(self):
# Regression for #17076
@@ -227,6 +234,12 @@ class URLPatternReverse(TestCase):
# exception
self.fail("Expected a NoReverseMatch, but none occurred.")
+ def test_script_name_escaping(self):
+ self.assertEqual(
+ reverse('optional', args=['foo:bar'], prefix='/script:name/'),
+ '/script:name/optional/foo:bar/'
+ )
+
def test_reverse_returns_unicode(self):
name, expected, args, kwargs = test_data[0]
self.assertIsInstance(