Mercurial > public > mercurial-scm > hg-stable
annotate tests/test-url.py @ 52679:f19a3f1437f3
pyupgrade: drop `coding=UTF-8` comments
PEP-3120[1] (Python 3.0 in 2007) says that UTF-8 is the default encoding. That
should be long enough ago that no reasonable editor would trip over this, and
certainly any supported version of Python won't.
The comments were probably harmless, but as `pyupgrade` has no mechanism to
disable this change, omitting this change makes it unusable as a code checking
tool, and makes it a pain to use occasionally to upgrade the source (since these
changes would need to be manually reverted).
[1] https://peps.python.org/pep-3120/
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 07 Jan 2025 16:46:21 -0500 |
parents | 9db77d46de79 |
children |
rev | line source |
---|---|
28914
63fe5ddb8715
tests: make test-url use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28677
diff
changeset
|
1 import doctest |
15398
474279be5add
tests: fix readline escape characters in heredoctest.py/test-url.py
Brodie Rao <brodie@bitheap.org>
parents:
15018
diff
changeset
|
2 import os |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
3 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
4 |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
5 def check(a, b): |
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
6 if a != b: |
28677
2903558a6991
py3: make test-url use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26421
diff
changeset
|
7 print((a, b)) |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
8 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
9 |
12606
5c8353692123
test-url: refactor with shorter lines
Martin Geisler <mg@aragost.com>
parents:
12592
diff
changeset
|
10 def cert(cn): |
20685
56b1f39dd0c1
test-url: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com>
parents:
15611
diff
changeset
|
11 return {'subject': ((('commonName', cn),),)} |
12606
5c8353692123
test-url: refactor with shorter lines
Martin Geisler <mg@aragost.com>
parents:
12592
diff
changeset
|
12 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
13 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
14 from mercurial import sslutil |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
15 |
28914
63fe5ddb8715
tests: make test-url use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28677
diff
changeset
|
16 _verifycert = sslutil._verifycert |
12724
66e7ba85585b
test-url: remove trailing whitespace
Augie Fackler <durin42@gmail.com>
parents:
12606
diff
changeset
|
17 # Test non-wildcard certificates |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
18 check(_verifycert(cert('example.com'), 'example.com'), None) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
19 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
20 _verifycert(cert('example.com'), 'www.example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
21 b'certificate is for example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
22 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
23 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
24 _verifycert(cert('www.example.com'), 'example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
25 b'certificate is for www.example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
26 ) |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
27 |
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
28 # Test wildcard certificates |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
29 check(_verifycert(cert('*.example.com'), 'www.example.com'), None) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
30 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
31 _verifycert(cert('*.example.com'), 'example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
32 b'certificate is for *.example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
33 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
34 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
35 _verifycert(cert('*.example.com'), 'w.w.example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
36 b'certificate is for *.example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
37 ) |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
38 |
13249
75d0c38a0bca
url: check subjectAltName when verifying ssl certificate
Yuya Nishihara <yuya@tcha.org>
parents:
13248
diff
changeset
|
39 # Test subjectAltName |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
40 san_cert = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
41 'subject': ((('commonName', 'example.com'),),), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
42 'subjectAltName': (('DNS', '*.example.net'), ('DNS', 'example.net')), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
43 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
44 check(_verifycert(san_cert, 'example.net'), None) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
45 check(_verifycert(san_cert, 'foo.example.net'), None) |
14666
27b080aa880a
sslutil: fall back to commonName when no dNSName in subjectAltName (issue2798)
Nicolas Bareil <nico@chdir.org>
parents:
14313
diff
changeset
|
46 # no fallback to subject commonName when subjectAltName has DNS |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
47 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
48 _verifycert(san_cert, 'example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
49 b'certificate is for *.example.net, example.net', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
50 ) |
14666
27b080aa880a
sslutil: fall back to commonName when no dNSName in subjectAltName (issue2798)
Nicolas Bareil <nico@chdir.org>
parents:
14313
diff
changeset
|
51 # fallback to subject commonName when no DNS in subjectAltName |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
52 san_cert = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
53 'subject': ((('commonName', 'example.com'),),), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
54 'subjectAltName': (('IP Address', '8.8.8.8'),), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
55 } |
14666
27b080aa880a
sslutil: fall back to commonName when no dNSName in subjectAltName (issue2798)
Nicolas Bareil <nico@chdir.org>
parents:
14313
diff
changeset
|
56 check(_verifycert(san_cert, 'example.com'), None) |
13249
75d0c38a0bca
url: check subjectAltName when verifying ssl certificate
Yuya Nishihara <yuya@tcha.org>
parents:
13248
diff
changeset
|
57 |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
58 # Avoid some pitfalls |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
59 check(_verifycert(cert('*.foo'), 'foo'), b'certificate is for *.foo') |
29452
26a5d605b868
sslutil: synchronize hostname matching logic with CPython
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29451
diff
changeset
|
60 check(_verifycert(cert('*o'), 'foo'), None) |
12592
f2937d6492c5
url: verify correctness of https server certificates (issue2407)
Mads Kiilerich <mads@kiilerich.com>
parents:
diff
changeset
|
61 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
62 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
63 _verifycert({'subject': ()}, 'example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
64 b'no commonName or subjectAltName found in certificate', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
65 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
66 check(_verifycert(None, 'example.com'), b'no certificate received') |
13248
00411a4fa1bb
url: fix UnicodeDecodeError on certificate verification error
Yuya Nishihara <yuya@tcha.org>
parents:
12865
diff
changeset
|
67 |
14666
27b080aa880a
sslutil: fall back to commonName when no dNSName in subjectAltName (issue2798)
Nicolas Bareil <nico@chdir.org>
parents:
14313
diff
changeset
|
68 # Unicode (IDN) certname isn't supported |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
69 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
70 _verifycert(cert('\u4f8b.jp'), 'example.jp'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
71 b'IDN in certificate not supported', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
72 ) |
14666
27b080aa880a
sslutil: fall back to commonName when no dNSName in subjectAltName (issue2798)
Nicolas Bareil <nico@chdir.org>
parents:
14313
diff
changeset
|
73 |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
74 # The following tests are from CPython's test_ssl.py. |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
75 check(_verifycert(cert('example.com'), 'example.com'), None) |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
76 check(_verifycert(cert('example.com'), 'ExAmple.cOm'), None) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
77 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
78 _verifycert(cert('example.com'), 'www.example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
79 b'certificate is for example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
80 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
81 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
82 _verifycert(cert('example.com'), '.example.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
83 b'certificate is for example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
84 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
85 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
86 _verifycert(cert('example.com'), 'example.org'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
87 b'certificate is for example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
88 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
89 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
90 _verifycert(cert('example.com'), 'exampleXcom'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
91 b'certificate is for example.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
92 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
93 check(_verifycert(cert('*.a.com'), 'foo.a.com'), None) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
94 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
95 _verifycert(cert('*.a.com'), 'bar.foo.a.com'), b'certificate is for *.a.com' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
96 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
97 check(_verifycert(cert('*.a.com'), 'a.com'), b'certificate is for *.a.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
98 check(_verifycert(cert('*.a.com'), 'Xa.com'), b'certificate is for *.a.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
99 check(_verifycert(cert('*.a.com'), '.a.com'), b'certificate is for *.a.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
100 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
101 # only match one left-most wildcard |
29452
26a5d605b868
sslutil: synchronize hostname matching logic with CPython
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29451
diff
changeset
|
102 check(_verifycert(cert('f*.com'), 'foo.com'), None) |
26a5d605b868
sslutil: synchronize hostname matching logic with CPython
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29451
diff
changeset
|
103 check(_verifycert(cert('f*.com'), 'f.com'), None) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
104 check(_verifycert(cert('f*.com'), 'bar.com'), b'certificate is for f*.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
105 check(_verifycert(cert('f*.com'), 'foo.a.com'), b'certificate is for f*.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
106 check(_verifycert(cert('f*.com'), 'bar.foo.com'), b'certificate is for f*.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
107 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
108 # NULL bytes are bad, CVE-2013-4073 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
109 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
110 _verifycert( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
111 cert('null.python.org\x00example.org'), 'null.python.org\x00example.org' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
112 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
113 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
114 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
115 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
116 _verifycert(cert('null.python.org\x00example.org'), 'example.org'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
117 b'certificate is for null.python.org\x00example.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
118 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
119 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
120 _verifycert(cert('null.python.org\x00example.org'), 'null.python.org'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
121 b'certificate is for null.python.org\x00example.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
122 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
123 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
124 # error cases with wildcards |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
125 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
126 _verifycert(cert('*.*.a.com'), 'bar.foo.a.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
127 b'certificate is for *.*.a.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
128 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
129 check(_verifycert(cert('*.*.a.com'), 'a.com'), b'certificate is for *.*.a.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
130 check(_verifycert(cert('*.*.a.com'), 'Xa.com'), b'certificate is for *.*.a.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
131 check(_verifycert(cert('*.*.a.com'), '.a.com'), b'certificate is for *.*.a.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
132 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
133 check(_verifycert(cert('a.*.com'), 'a.foo.com'), b'certificate is for a.*.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
134 check(_verifycert(cert('a.*.com'), 'a..com'), b'certificate is for a.*.com') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
135 check(_verifycert(cert('a.*.com'), 'a.com'), b'certificate is for a.*.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
136 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
137 # wildcard doesn't match IDNA prefix 'xn--' |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
138 idna = 'püthon.python.org'.encode('idna').decode('ascii') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
139 check(_verifycert(cert(idna), idna), None) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
140 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
141 _verifycert(cert('x*.python.org'), idna), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
142 b'certificate is for x*.python.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
143 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
144 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
145 _verifycert(cert('xn--p*.python.org'), idna), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
146 b'certificate is for xn--p*.python.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
147 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
148 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
149 # wildcard in first fragment and IDNA A-labels in sequent fragments |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
150 # are supported. |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
151 idna = 'www*.pythön.org'.encode('idna').decode('ascii') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
152 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
153 _verifycert(cert(idna), 'www.pythön.org'.encode('idna').decode('ascii')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
154 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
155 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
156 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
157 _verifycert(cert(idna), 'www1.pythön.org'.encode('idna').decode('ascii')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
158 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
159 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
160 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
161 _verifycert(cert(idna), 'ftp.pythön.org'.encode('idna').decode('ascii')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
162 b'certificate is for www*.xn--pythn-mua.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
163 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
164 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
165 _verifycert(cert(idna), 'pythön.org'.encode('idna').decode('ascii')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
166 b'certificate is for www*.xn--pythn-mua.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
167 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
168 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
169 c = { |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
170 'notAfter': 'Jun 26 21:41:46 2011 GMT', |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
171 'subject': ((('commonName', 'linuxfrz.org'),),), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
172 'subjectAltName': ( |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
173 ('DNS', 'linuxfr.org'), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
174 ('DNS', 'linuxfr.com'), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
175 ('othername', '<unsupported>'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
176 ), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
177 } |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
178 check(_verifycert(c, 'linuxfr.org'), None) |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
179 check(_verifycert(c, 'linuxfr.com'), None) |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
180 # Not a "DNS" entry |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
181 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
182 _verifycert(c, '<unsupported>'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
183 b'certificate is for linuxfr.org, linuxfr.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
184 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
185 # When there is a subjectAltName, commonName isn't used |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
186 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
187 _verifycert(c, 'linuxfrz.org'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
188 b'certificate is for linuxfr.org, linuxfr.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
189 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
190 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
191 # A pristine real-world example |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
192 c = { |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
193 'notAfter': 'Dec 18 23:59:59 2011 GMT', |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
194 'subject': ( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
195 (('countryName', 'US'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
196 (('stateOrProvinceName', 'California'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
197 (('localityName', 'Mountain View'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
198 (('organizationName', 'Google Inc'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
199 (('commonName', 'mail.google.com'),), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
200 ), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
201 } |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
202 check(_verifycert(c, 'mail.google.com'), None) |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
203 check(_verifycert(c, 'gmail.com'), b'certificate is for mail.google.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
204 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
205 # Only commonName is considered |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
206 check(_verifycert(c, 'California'), b'certificate is for mail.google.com') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
207 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
208 # Neither commonName nor subjectAltName |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
209 c = { |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
210 'notAfter': 'Dec 18 23:59:59 2011 GMT', |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
211 'subject': ( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
212 (('countryName', 'US'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
213 (('stateOrProvinceName', 'California'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
214 (('localityName', 'Mountain View'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
215 (('organizationName', 'Google Inc'),), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
216 ), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
217 } |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
218 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
219 _verifycert(c, 'mail.google.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
220 b'no commonName or subjectAltName found in certificate', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
221 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
222 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
223 # No DNS entry in subjectAltName but a commonName |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
224 c = { |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
225 'notAfter': 'Dec 18 23:59:59 2099 GMT', |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
226 'subject': ( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
227 (('countryName', 'US'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
228 (('stateOrProvinceName', 'California'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
229 (('localityName', 'Mountain View'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
230 (('commonName', 'mail.google.com'),), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
231 ), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
232 'subjectAltName': (('othername', 'blabla'),), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
233 } |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
234 check(_verifycert(c, 'mail.google.com'), None) |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
235 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
236 # No DNS entry subjectAltName and no commonName |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
237 c = { |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
238 'notAfter': 'Dec 18 23:59:59 2099 GMT', |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
239 'subject': ( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
240 (('countryName', 'US'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
241 (('stateOrProvinceName', 'California'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
242 (('localityName', 'Mountain View'),), |
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
243 (('organizationName', 'Google Inc'),), |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
244 ), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
245 'subjectAltName': (('othername', 'blabla'),), |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
246 } |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
247 check( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
248 _verifycert(c, 'google.com'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
249 b'no commonName or subjectAltName found in certificate', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
250 ) |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
251 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
252 # Empty cert / no cert |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
253 check(_verifycert(None, 'example.com'), b'no certificate received') |
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
254 check(_verifycert({}, 'example.com'), b'no certificate received') |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
255 |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
256 # avoid denials of service by refusing more than one |
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
257 # wildcard per fragment. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
258 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
259 _verifycert({'subject': ((('commonName', 'a*b.com'),),)}, 'axxb.com'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
260 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
261 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
262 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
263 _verifycert({'subject': ((('commonName', 'a*b.co*'),),)}, 'axxb.com'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
264 b'certificate is for a*b.co*', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
265 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
266 check( |
52664
9db77d46de79
py3: drop redundant `u''` prefixes on string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
267 _verifycert({'subject': ((('commonName', 'a*b*.com'),),)}, 'axxbxxc.com'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
268 b'too many wildcards in certificate DNS name: a*b*.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
269 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
270 |
29451
676f4d0e3a7b
tests: import CPython's hostname matching tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28914
diff
changeset
|
271 |
13770 | 272 def test_url(): |
273 """ | |
37918
0dcd03637d36
tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com>
parents:
29452
diff
changeset
|
274 >>> from mercurial import error, pycompat |
46907
ffd3e823a7e5
urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45687
diff
changeset
|
275 >>> from mercurial.utils.urlutil import url |
37999
d088810c496e
tests: fix deprecation warning in test-url.py
Augie Fackler <augie@google.com>
parents:
37919
diff
changeset
|
276 >>> from mercurial.utils.stringutil import forcebytestr |
13770 | 277 |
278 This tests for edge cases in url.URL's parsing algorithm. Most of | |
279 these aren't useful for documentation purposes, so they aren't | |
280 part of the class's doc tests. | |
281 | |
282 Query strings and fragments: | |
283 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
284 >>> url(b'http://host/a?b#c') |
13770 | 285 <url scheme: 'http', host: 'host', path: 'a', query: 'b', fragment: 'c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
286 >>> url(b'http://host/a?') |
13770 | 287 <url scheme: 'http', host: 'host', path: 'a'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
288 >>> url(b'http://host/a#b#c') |
13770 | 289 <url scheme: 'http', host: 'host', path: 'a', fragment: 'b#c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
290 >>> url(b'http://host/a#b?c') |
13770 | 291 <url scheme: 'http', host: 'host', path: 'a', fragment: 'b?c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
292 >>> url(b'http://host/?a#b') |
13770 | 293 <url scheme: 'http', host: 'host', path: '', query: 'a', fragment: 'b'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
294 >>> url(b'http://host/?a#b', parsequery=False) |
13770 | 295 <url scheme: 'http', host: 'host', path: '?a', fragment: 'b'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
296 >>> url(b'http://host/?a#b', parsefragment=False) |
13770 | 297 <url scheme: 'http', host: 'host', path: '', query: 'a#b'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
298 >>> url(b'http://host/?a#b', parsequery=False, parsefragment=False) |
13770 | 299 <url scheme: 'http', host: 'host', path: '?a#b'> |
300 | |
301 IPv6 addresses: | |
302 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
303 >>> url(b'ldap://[2001:db8::7]/c=GB?objectClass?one') |
13770 | 304 <url scheme: 'ldap', host: '[2001:db8::7]', path: 'c=GB', |
305 query: 'objectClass?one'> | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
306 >>> url(b'ldap://joe:xxx@[2001:db8::7]:80/c=GB?objectClass?one') |
13770 | 307 <url scheme: 'ldap', user: 'joe', passwd: 'xxx', host: '[2001:db8::7]', |
308 port: '80', path: 'c=GB', query: 'objectClass?one'> | |
309 | |
310 Missing scheme, host, etc.: | |
311 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
312 >>> url(b'://192.0.2.16:80/') |
13770 | 313 <url path: '://192.0.2.16:80/'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
314 >>> url(b'https://mercurial-scm.org') |
26421
4b0fc75f9403
urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents:
20685
diff
changeset
|
315 <url scheme: 'https', host: 'mercurial-scm.org'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
316 >>> url(b'/foo') |
13770 | 317 <url path: '/foo'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
318 >>> url(b'bundle:/foo') |
13770 | 319 <url scheme: 'bundle', path: '/foo'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
320 >>> url(b'a?b#c') |
13770 | 321 <url path: 'a?b', fragment: 'c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
322 >>> url(b'http://x.com?arg=/foo') |
13770 | 323 <url scheme: 'http', host: 'x.com', query: 'arg=/foo'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
324 >>> url(b'http://joe:xxx@/foo') |
13770 | 325 <url scheme: 'http', user: 'joe', passwd: 'xxx', path: 'foo'> |
326 | |
327 Just a scheme and a path: | |
328 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
329 >>> url(b'mailto:John.Doe@example.com') |
13770 | 330 <url scheme: 'mailto', path: 'John.Doe@example.com'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
331 >>> url(b'a:b:c:d') |
13808 | 332 <url path: 'a:b:c:d'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
333 >>> url(b'aa:bb:cc:dd') |
13808 | 334 <url scheme: 'aa', path: 'bb:cc:dd'> |
13770 | 335 |
336 SSH examples: | |
337 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
338 >>> url(b'ssh://joe@host//home/joe') |
13770 | 339 <url scheme: 'ssh', user: 'joe', host: 'host', path: '/home/joe'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
340 >>> url(b'ssh://joe:xxx@host/src') |
13770 | 341 <url scheme: 'ssh', user: 'joe', passwd: 'xxx', host: 'host', path: 'src'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
342 >>> url(b'ssh://joe:xxx@host') |
13770 | 343 <url scheme: 'ssh', user: 'joe', passwd: 'xxx', host: 'host'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
344 >>> url(b'ssh://joe@host') |
13770 | 345 <url scheme: 'ssh', user: 'joe', host: 'host'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
346 >>> url(b'ssh://host') |
13770 | 347 <url scheme: 'ssh', host: 'host'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
348 >>> url(b'ssh://') |
13770 | 349 <url scheme: 'ssh'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
350 >>> url(b'ssh:') |
13770 | 351 <url scheme: 'ssh'> |
352 | |
353 Non-numeric port: | |
354 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
355 >>> url(b'http://example.com:dd') |
13770 | 356 <url scheme: 'http', host: 'example.com', port: 'dd'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
357 >>> url(b'ssh://joe:xxx@host:ssh/foo') |
13770 | 358 <url scheme: 'ssh', user: 'joe', passwd: 'xxx', host: 'host', port: 'ssh', |
359 path: 'foo'> | |
360 | |
361 Bad authentication credentials: | |
362 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
363 >>> url(b'http://joe@joeville:123@4:@host/a?b#c') |
13770 | 364 <url scheme: 'http', user: 'joe@joeville', passwd: '123@4:', |
365 host: 'host', path: 'a', query: 'b', fragment: 'c'> | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
366 >>> url(b'http://!*#?/@!*#?/:@host/a?b#c') |
13770 | 367 <url scheme: 'http', host: '!*', fragment: '?/@!*#?/:@host/a?b#c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
368 >>> url(b'http://!*#?@!*#?:@host/a?b#c') |
13770 | 369 <url scheme: 'http', host: '!*', fragment: '?@!*#?:@host/a?b#c'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
370 >>> url(b'http://!*@:!*@@host/a?b#c') |
13770 | 371 <url scheme: 'http', user: '!*@', passwd: '!*@', host: 'host', |
372 path: 'a', query: 'b', fragment: 'c'> | |
373 | |
374 File paths: | |
375 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
376 >>> url(b'a/b/c/d.g.f') |
13770 | 377 <url path: 'a/b/c/d.g.f'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
378 >>> url(b'/x///z/y/') |
13770 | 379 <url path: '/x///z/y/'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
380 >>> url(b'/foo:bar') |
13848
b2798c1defff
url: be stricter about detecting schemes
Brodie Rao <brodie@bitheap.org>
parents:
13827
diff
changeset
|
381 <url path: '/foo:bar'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
382 >>> url(b'\\\\foo:bar') |
13848
b2798c1defff
url: be stricter about detecting schemes
Brodie Rao <brodie@bitheap.org>
parents:
13827
diff
changeset
|
383 <url path: '\\\\foo:bar'> |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
384 >>> url(b'./foo:bar') |
13848
b2798c1defff
url: be stricter about detecting schemes
Brodie Rao <brodie@bitheap.org>
parents:
13827
diff
changeset
|
385 <url path: './foo:bar'> |
13770 | 386 |
13817
7f18bab2c0b0
url: abort on file:// URLs with non-localhost hosts
Brodie Rao <brodie@bitheap.org>
parents:
13808
diff
changeset
|
387 Non-localhost file URL: |
7f18bab2c0b0
url: abort on file:// URLs with non-localhost hosts
Brodie Rao <brodie@bitheap.org>
parents:
13808
diff
changeset
|
388 |
37918
0dcd03637d36
tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com>
parents:
29452
diff
changeset
|
389 >>> try: |
0dcd03637d36
tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com>
parents:
29452
diff
changeset
|
390 ... u = url(b'file://mercurial-scm.org/foo') |
0dcd03637d36
tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com>
parents:
29452
diff
changeset
|
391 ... except error.Abort as e: |
45687
223296268c4e
tests: fix test-url.py on py3, broken by D9179
Martin von Zweigbergk <martinvonz@google.com>
parents:
45682
diff
changeset
|
392 ... pycompat.bytestr(e.message) |
37918
0dcd03637d36
tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com>
parents:
29452
diff
changeset
|
393 'file:// URLs can only refer to localhost' |
13817
7f18bab2c0b0
url: abort on file:// URLs with non-localhost hosts
Brodie Rao <brodie@bitheap.org>
parents:
13808
diff
changeset
|
394 |
13770 | 395 Empty URL: |
396 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
397 >>> u = url(b'') |
13770 | 398 >>> u |
399 <url path: ''> | |
400 >>> str(u) | |
401 '' | |
402 | |
403 Empty path with query string: | |
404 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
405 >>> str(url(b'http://foo/?bar')) |
13770 | 406 'http://foo/?bar' |
407 | |
408 Invalid path: | |
409 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
410 >>> u = url(b'http://foo/bar') |
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
411 >>> u.path = b'bar' |
13770 | 412 >>> str(u) |
413 'http://foo/bar' | |
414 | |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
415 >>> u = url(b'file:/foo/bar/baz') |
14313
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
416 >>> u |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
417 <url scheme: 'file', path: '/foo/bar/baz'> |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
418 >>> str(u) |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
419 'file:///foo/bar/baz' |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
420 >>> pycompat.bytestr(u.localpath()) |
15018
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
421 '/foo/bar/baz' |
14313
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
422 |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
423 >>> u = url(b'file:///foo/bar/baz') |
13770 | 424 >>> u |
425 <url scheme: 'file', path: '/foo/bar/baz'> | |
426 >>> str(u) | |
14313
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
427 'file:///foo/bar/baz' |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
428 >>> pycompat.bytestr(u.localpath()) |
15018
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
429 '/foo/bar/baz' |
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
430 |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
431 >>> u = url(b'file:///f:oo/bar/baz') |
15018
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
432 >>> u |
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
433 <url scheme: 'file', path: 'f:oo/bar/baz'> |
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
434 >>> str(u) |
15611 | 435 'file:///f:oo/bar/baz' |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
436 >>> pycompat.bytestr(u.localpath()) |
15018
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
437 'f:oo/bar/baz' |
14313
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
438 |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
439 >>> u = url(b'file://localhost/f:oo/bar/baz') |
15496
396e83d635a6
url: handle file://localhost/c:/foo "correctly"
Mads Kiilerich <mads@kiilerich.com>
parents:
15398
diff
changeset
|
440 >>> u |
396e83d635a6
url: handle file://localhost/c:/foo "correctly"
Mads Kiilerich <mads@kiilerich.com>
parents:
15398
diff
changeset
|
441 <url scheme: 'file', host: 'localhost', path: 'f:oo/bar/baz'> |
396e83d635a6
url: handle file://localhost/c:/foo "correctly"
Mads Kiilerich <mads@kiilerich.com>
parents:
15398
diff
changeset
|
442 >>> str(u) |
15513 | 443 'file://localhost/f:oo/bar/baz' |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
444 >>> pycompat.bytestr(u.localpath()) |
15496
396e83d635a6
url: handle file://localhost/c:/foo "correctly"
Mads Kiilerich <mads@kiilerich.com>
parents:
15398
diff
changeset
|
445 'f:oo/bar/baz' |
396e83d635a6
url: handle file://localhost/c:/foo "correctly"
Mads Kiilerich <mads@kiilerich.com>
parents:
15398
diff
changeset
|
446 |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
447 >>> u = url(b'file:foo/bar/baz') |
14313
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
448 >>> u |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
449 <url scheme: 'file', path: 'foo/bar/baz'> |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
450 >>> str(u) |
a389dd285282
util: make str(url) return file:/// for abs paths again
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14204
diff
changeset
|
451 'file:foo/bar/baz' |
37919
078c3eec2d5c
tests: port test-url.py to Python 3
Augie Fackler <augie@google.com>
parents:
37918
diff
changeset
|
452 >>> pycompat.bytestr(u.localpath()) |
15018
e89f62dcd723
url: really handle urls of the form file:///c:/foo/bar/ correctly
Mads Kiilerich <mads@kiilerich.com>
parents:
14666
diff
changeset
|
453 'foo/bar/baz' |
13770 | 454 """ |
455 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37999
diff
changeset
|
456 |
15398
474279be5add
tests: fix readline escape characters in heredoctest.py/test-url.py
Brodie Rao <brodie@bitheap.org>
parents:
15018
diff
changeset
|
457 if 'TERM' in os.environ: |
474279be5add
tests: fix readline escape characters in heredoctest.py/test-url.py
Brodie Rao <brodie@bitheap.org>
parents:
15018
diff
changeset
|
458 del os.environ['TERM'] |
474279be5add
tests: fix readline escape characters in heredoctest.py/test-url.py
Brodie Rao <brodie@bitheap.org>
parents:
15018
diff
changeset
|
459 |
13770 | 460 doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE) |