From 0352e34044f393f3890ab12b5549b6bba8bc7102 Mon Sep 17 00:00:00 2001 From: Yeray Diaz Diaz Date: Tue, 14 May 2019 19:57:34 +0100 Subject: [PATCH 1/4] Include URL.__hash__ in test --- tests/models/test_requests.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/models/test_requests.py b/tests/models/test_requests.py index f010db8ced..5be9876eb5 100644 --- a/tests/models/test_requests.py +++ b/tests/models/test_requests.py @@ -98,15 +98,19 @@ async def streaming_body(data): def test_url(): - request = httpcore.Request("GET", "http://example.org") + url = "http://example.org" + request = httpcore.Request("GET", url) assert request.url.scheme == "http" assert request.url.port == 80 assert request.url.full_path == "/" + assert hash(request.url) == hash(url) - request = httpcore.Request("GET", "https://example.org/abc?foo=bar") + url = "https://example.org/abc?foo=bar" + request = httpcore.Request("GET", url) assert request.url.scheme == "https" assert request.url.port == 443 assert request.url.full_path == "/abc?foo=bar" + assert hash(request.url) == hash(url) def test_invalid_urls(): From bb8ed73768a337b769ce62df535527bada8d716b Mon Sep 17 00:00:00 2001 From: Yeray Diaz Diaz Date: Wed, 15 May 2019 13:42:37 +0100 Subject: [PATCH 2/4] Add test for URLs being used in a set Remove hash assertion on test requests --- tests/models/test_requests.py | 2 -- tests/models/test_url.py | 11 +++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/models/test_requests.py b/tests/models/test_requests.py index 5be9876eb5..c7faf816a9 100644 --- a/tests/models/test_requests.py +++ b/tests/models/test_requests.py @@ -103,14 +103,12 @@ def test_url(): assert request.url.scheme == "http" assert request.url.port == 80 assert request.url.full_path == "/" - assert hash(request.url) == hash(url) url = "https://example.org/abc?foo=bar" request = httpcore.Request("GET", url) assert request.url.scheme == "https" assert request.url.port == 443 assert request.url.full_path == "/abc?foo=bar" - assert hash(request.url) == hash(url) def test_invalid_urls(): diff --git a/tests/models/test_url.py b/tests/models/test_url.py index 9ed96f6d61..b815ae9b1d 100644 --- a/tests/models/test_url.py +++ b/tests/models/test_url.py @@ -33,3 +33,14 @@ def test_url_query_params(): "https://example.org:123/path/to/somewhere?b=456", query_params={"a": "123"} ) assert str(url) == "https://example.org:123/path/to/somewhere?a=123" + + +def test_url_set(): + urls = ( + URL("http://example.org:123/path/to/somewhere"), + URL("http://example.org:123/path/to/somewhere/else"), + ) + + url_set = set(urls) + + assert tuple(url_set) == urls From 586506ad052646e6b88d6045a1211be43e99037e Mon Sep 17 00:00:00 2001 From: Yeray Diaz Diaz Date: Wed, 15 May 2019 13:45:43 +0100 Subject: [PATCH 3/4] Cleanup models.py --- httpcore/models.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/httpcore/models.py b/httpcore/models.py index 946ae16685..68ab4b2d72 100644 --- a/httpcore/models.py +++ b/httpcore/models.py @@ -4,10 +4,8 @@ from urllib.parse import parse_qsl, urlencode import chardet -import idna import rfc3986 -from .config import SSLConfig, TimeoutConfig from .decoders import ( ACCEPT_ENCODING, SUPPORTED_DECODERS, @@ -808,7 +806,7 @@ def stream(self) -> typing.Iterator[bytes]: while True: try: yield self._loop.run_until_complete(inner.__anext__()) - except StopAsyncIteration as exc: + except StopAsyncIteration: break def raw(self) -> typing.Iterator[bytes]: @@ -816,7 +814,7 @@ def raw(self) -> typing.Iterator[bytes]: while True: try: yield self._loop.run_until_complete(inner.__anext__()) - except StopAsyncIteration as exc: + except StopAsyncIteration: break def close(self) -> None: From 306d9a59898cdd979765e96267390390f94a89d1 Mon Sep 17 00:00:00 2001 From: Yeray Diaz Diaz Date: Wed, 15 May 2019 13:51:34 +0100 Subject: [PATCH 4/4] Use membership test instead of equality to avoid ordering problems --- tests/models/test_url.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/models/test_url.py b/tests/models/test_url.py index b815ae9b1d..98e01d9d1d 100644 --- a/tests/models/test_url.py +++ b/tests/models/test_url.py @@ -43,4 +43,4 @@ def test_url_set(): url_set = set(urls) - assert tuple(url_set) == urls + assert all(url in urls for url in url_set)