Fixed #25635 -- Made URLValidator allow '+' in scheme.
This commit is contained in:
parent
5ce84b8044
commit
06627ef2ca
|
@ -89,7 +89,7 @@ class URLValidator(RegexValidator):
|
||||||
host_re = '(' + hostname_re + domain_re + tld_re + '|localhost)'
|
host_re = '(' + hostname_re + domain_re + tld_re + '|localhost)'
|
||||||
|
|
||||||
regex = _lazy_re_compile(
|
regex = _lazy_re_compile(
|
||||||
r'^(?:[a-z0-9\.\-]*)://' # scheme is validated separately
|
r'^(?:[a-z0-9\.\-\+]*)://' # scheme is validated separately
|
||||||
r'(?:\S+(?::\S*)?@)?' # user:pass authentication
|
r'(?:\S+(?::\S*)?@)?' # user:pass authentication
|
||||||
r'(?:' + ipv4_re + '|' + ipv6_re + '|' + host_re + ')'
|
r'(?:' + ipv4_re + '|' + ipv6_re + '|' + host_re + ')'
|
||||||
r'(?::\d{2,5})?' # port
|
r'(?::\d{2,5})?' # port
|
||||||
|
|
|
@ -22,7 +22,7 @@ from django.test.utils import str_prefix
|
||||||
from django.utils._os import upath
|
from django.utils._os import upath
|
||||||
|
|
||||||
NOW = datetime.now()
|
NOW = datetime.now()
|
||||||
EXTENDED_SCHEMES = ['http', 'https', 'ftp', 'ftps', 'git', 'file']
|
EXTENDED_SCHEMES = ['http', 'https', 'ftp', 'ftps', 'git', 'file', 'git+ssh']
|
||||||
|
|
||||||
TEST_DATA = [
|
TEST_DATA = [
|
||||||
# (validator, value, expected),
|
# (validator, value, expected),
|
||||||
|
@ -205,6 +205,7 @@ TEST_DATA = [
|
||||||
|
|
||||||
(URLValidator(EXTENDED_SCHEMES), 'file://localhost/path', None),
|
(URLValidator(EXTENDED_SCHEMES), 'file://localhost/path', None),
|
||||||
(URLValidator(EXTENDED_SCHEMES), 'git://example.com/', None),
|
(URLValidator(EXTENDED_SCHEMES), 'git://example.com/', None),
|
||||||
|
(URLValidator(EXTENDED_SCHEMES), 'git+ssh://git@github.com/example/hg-git.git', None),
|
||||||
|
|
||||||
(URLValidator(EXTENDED_SCHEMES), 'git://-invalid.com', ValidationError),
|
(URLValidator(EXTENDED_SCHEMES), 'git://-invalid.com', ValidationError),
|
||||||
# Trailing newlines not accepted
|
# Trailing newlines not accepted
|
||||||
|
|
Loading…
Reference in New Issue