Skip to content

Commit 092286c

Browse files
authored
Merge branch 'master' into requires-io-master
2 parents ad44031 + 77433f9 commit 092286c

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

.appveyor.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@
66

77
environment:
88
matrix:
9-
- PYTHON: "C:\\Python27-x64"
10-
TOX_ENV: "test-py27,codecov"
11-
12-
- PYTHON: "C:\\Python35-x64"
13-
TOX_ENV: "test-py35,codecov"
14-
159
- PYTHON: "C:\\Python36-x64"
1610
TOX_ENV: "test-py36,codecov"
1711

src/hyperlink/_url.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def _make_quote_map(safe_chars):
225225
_QUERY_KEY_QUOTE_MAP = _make_quote_map(_QUERY_KEY_SAFE)
226226
_QUERY_KEY_DECODE_MAP = _make_decode_map(_QUERY_KEY_DELIMS)
227227
_QUERY_VALUE_QUOTE_MAP = _make_quote_map(_QUERY_VALUE_SAFE)
228-
_QUERY_VALUE_DECODE_MAP = _make_decode_map(_QUERY_VALUE_DELIMS)
228+
_QUERY_VALUE_DECODE_MAP = _make_decode_map(_QUERY_VALUE_DELIMS | set("+"))
229229
_FRAGMENT_QUOTE_MAP = _make_quote_map(_FRAGMENT_SAFE)
230230
_FRAGMENT_DECODE_MAP = _make_decode_map(_FRAGMENT_DELIMS)
231231
_UNRESERVED_QUOTE_MAP = _make_quote_map(_UNRESERVED_CHARS)

src/hyperlink/test/test_decoded_url.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,34 @@ def test_durl_basic(self):
3636
assert durl.user == "user"
3737
assert durl.userinfo == ("user", "\0\0\0\0")
3838

39+
def test_roundtrip_iri_parameter_values(self):
40+
# type: () -> None
41+
"""
42+
.to_iri() should never modify the application-level data of a query
43+
parameter.
44+
"""
45+
for value in ["hello", "goodbye", "+", "/", ":", "?"]:
46+
self.assertEqual(
47+
DecodedURL(DecodedURL().set("test", value).to_iri()).get(
48+
"test"
49+
),
50+
[value],
51+
)
52+
53+
def test_roundtrip_uri_parameter_values(self):
54+
# type: () -> None
55+
"""
56+
.to_uri() should never modify the application-level data of a query
57+
parameter.
58+
"""
59+
for value in ["hello", "goodbye", "+", "/", ":", "?"]:
60+
self.assertEqual(
61+
DecodedURL(DecodedURL().set("test", value).to_uri()).get(
62+
"test"
63+
),
64+
[value],
65+
)
66+
3967
def test_passthroughs(self):
4068
# type: () -> None
4169

0 commit comments

Comments
 (0)