From 92925950090c28124d191f81f0f0c6a742e6b136 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Tue, 8 Jul 2025 00:21:38 -0400 Subject: [PATCH] tests: support any httpx version Signed-off-by: Eli Schwartz --- noxfile.py | 2 +- tests/test_api.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/noxfile.py b/noxfile.py index 39fbef4..40fe124 100644 --- a/noxfile.py +++ b/noxfile.py @@ -7,7 +7,7 @@ nox.options.keywords = "test + mypy" @nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]) def test(session): - deps = ["pytest", "pytest-asyncio", "pytest-cov", "trio", "starlette", "flask"] + deps = ["pytest", "pytest-asyncio", "pytest-cov", "trio", "starlette", "flask", "packaging"] session.install("--upgrade", *deps) session.install("-e", ".") diff --git a/tests/test_api.py b/tests/test_api.py index 81ca4b2..170389b 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -7,12 +7,15 @@ from unittest import mock import httpcore import httpx import pytest +from packaging.version import Version import respx from respx.models import Route from respx.patterns import M from respx.router import MockRouter +httpx_0_28 = Version(httpx.__version__) >= Version('0.28') + async def test_http_methods(client): async with respx.mock: @@ -214,7 +217,7 @@ async def test_content_variants(client, key, value, expected_content_type): {"X-Foo": "bar"}, { "Content-Type": "application/json", - "Content-Length": "13", + "Content-Length": "13" if httpx_0_28 else "14", "X-Foo": "bar", }, ), @@ -223,7 +226,7 @@ async def test_content_variants(client, key, value, expected_content_type): {"Content-Type": "application/json; charset=utf-8", "X-Foo": "bar"}, { "Content-Type": "application/json; charset=utf-8", - "Content-Length": "13", + "Content-Length": "13" if httpx_0_28 else "14", "X-Foo": "bar", }, ), @@ -322,19 +325,29 @@ async def test_callable_content(client): assert request.called is True assert async_response.status_code == 200 assert async_response.text == "hello world." - assert request.calls[-1][0].content == b'{"x":"."}' + if httpx_0_28: + assert request.calls[-1][0].content == b'{"x":"."}' + else: + assert request.calls[-1][0].content == b'{"x": "."}' respx_mock.reset() sync_response = httpx.post("https://foo.bar/jonas/", json={"x": "!"}) assert request.called is True assert sync_response.status_code == 200 assert sync_response.text == "hello jonas!" - assert request.calls[-1][0].content == b'{"x":"!"}' + if httpx_0_28: + assert request.calls[-1][0].content == b'{"x":"!"}' + else: + assert request.calls[-1][0].content == b'{"x": "!"}' async def test_request_callback(client): def callback(request, name): - if request.url.host == "foo.bar" and request.content == b'{"foo":"bar"}': + if httpx_0_28: + content = b'{"foo":"bar"}' + else: + content = b'{"foo": "bar"}' + if request.url.host == "foo.bar" and request.content == content: return respx.MockResponse( 202, headers={"X-Foo": "bar"}, -- 2.49.0