commit: aa113fa2e04b2036f6d2b73c3a2355673e5c27aa Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Thu Aug 5 15:44:53 2021 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Aug 5 15:50:24 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aa113fa2
dev-python/httpx: Fix tests on big endian platforms Closes: https://bugs.gentoo.org/802195 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> .../httpx/files/httpx-0.18.2-big-endian.patch | 40 ++++++++++++++++++++++ dev-python/httpx/httpx-0.18.2.ebuild | 5 +++ 2 files changed, 45 insertions(+) diff --git a/dev-python/httpx/files/httpx-0.18.2-big-endian.patch b/dev-python/httpx/files/httpx-0.18.2-big-endian.patch new file mode 100644 index 00000000000..794609d86a5 --- /dev/null +++ b/dev-python/httpx/files/httpx-0.18.2-big-endian.patch @@ -0,0 +1,40 @@ +From 88a0a85ff795d8c23d5cd2cd113eeac957cc818a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]> +Date: Thu, 5 Aug 2021 17:35:54 +0200 +Subject: [PATCH] Fix JSON wrong encoding tests on big endian platforms + +Fix test_json_without_specified_encoding_*_error tests on big endian +platforms. The tests wrongly assume that data encoded as "utf-32-be" +can not be decoded as "utf-32". This is true on little endian platforms +but on big endian platforms "utf-32" is equivalent to "utf-32-be". +To avoid the problem, explicitly decode as "utf-32-le", as this should +trigger the expected exception independently of platform's endianness. +--- + tests/models/test_responses.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/models/test_responses.py b/tests/models/test_responses.py +index f1815dc..b7c2d57 100644 +--- a/tests/models/test_responses.py ++++ b/tests/models/test_responses.py +@@ -735,7 +735,7 @@ def test_json_without_specified_encoding_decode_error(): + content = json.dumps(data).encode("utf-32-be") + headers = {"Content-Type": "application/json"} + # force incorrect guess from `guess_json_utf` to trigger error +- with mock.patch("httpx._models.guess_json_utf", return_value="utf-32"): ++ with mock.patch("httpx._models.guess_json_utf", return_value="utf-32-le"): + response = httpx.Response( + 200, + content=content, +@@ -750,7 +750,7 @@ def test_json_without_specified_encoding_value_error(): + content = json.dumps(data).encode("utf-32-be") + headers = {"Content-Type": "application/json"} + # force incorrect guess from `guess_json_utf` to trigger error +- with mock.patch("httpx._models.guess_json_utf", return_value="utf-32"): ++ with mock.patch("httpx._models.guess_json_utf", return_value="utf-32-le"): + response = httpx.Response(200, content=content, headers=headers) + with pytest.raises(json.decoder.JSONDecodeError): + response.json() +-- +2.32.0 + diff --git a/dev-python/httpx/httpx-0.18.2.ebuild b/dev-python/httpx/httpx-0.18.2.ebuild index 4a3ce240ce3..04a60d9a103 100644 --- a/dev-python/httpx/httpx-0.18.2.ebuild +++ b/dev-python/httpx/httpx-0.18.2.ebuild @@ -40,6 +40,11 @@ BDEPEND=" distutils_enable_tests pytest +PATCHES=( + # https://github.com/encode/httpx/pull/1781 + "${FILESDIR}"/${P}-big-endian.patch +) + python_prepare_all() { # trio is not currently in the tree sed -i '/^import trio/d' tests/concurrency.py || die
