diff options
| -rw-r--r-- | django/utils/html.py | 2 | ||||
| -rw-r--r-- | tests/template_tests/filter_tests/test_urlize.py | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/django/utils/html.py b/django/utils/html.py index 779155e88c..9f9fbdb2a5 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -26,7 +26,7 @@ WRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('<', '>'), (' DOTS = ['·', '*', '\u2022', '•', '•', '•'] unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)') -word_split_re = re.compile(r'(\s+)') +word_split_re = re.compile(r'''([\s<>"']+)''') simple_url_re = re.compile(r'^https?://\[?\w', re.IGNORECASE) simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org)($|/.*)$', re.IGNORECASE) simple_email_re = re.compile(r'^\S+@\S+\.\S+$') diff --git a/tests/template_tests/filter_tests/test_urlize.py b/tests/template_tests/filter_tests/test_urlize.py index 38a0a3e3ed..c2efdd3e17 100644 --- a/tests/template_tests/filter_tests/test_urlize.py +++ b/tests/template_tests/filter_tests/test_urlize.py @@ -106,6 +106,26 @@ class FunctionTests(SimpleTestCase): '<a href="http://djangoproject.org/" rel="nofollow">djangoproject.org/</a>', ) + def test_url_split_chars(self): + # Quotes (single and double) and angle brackets shouldn't be considered + # part of URLs. + self.assertEqual( + urlize('www.server.com"abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a>"abc', + ) + self.assertEqual( + urlize('www.server.com\'abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a>'abc', + ) + self.assertEqual( + urlize('www.server.com<abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a><abc', + ) + self.assertEqual( + urlize('www.server.com>abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a>>abc', + ) + def test_email(self): self.assertEqual( urlize('info@djangoproject.org'), |
