From 0203947c3c5755fe69d25a49a579d2950dec6b31 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 18 Sep 2026 01:58:27 +0000 Subject: [PATCH 1/2] Initial plan From 997baf9c3a63fa400e0d83976536a77580b1a194 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 18 Sep 2026 02:08:09 +0000 Subject: [PATCH 2/2] test(python): add response replacement mock API coverage Co-authored-by: msyyc <70930885+msyyc@users.noreply.github.com> --- ...lacement-mock-api-tests-2026-9-18-2-0-7.md | 7 ++++++ packages/http-client-python/package-lock.json | 10 ++++---- packages/http-client-python/package.json | 2 +- ...nerator_core_response_replacement_async.py | 25 +++++++++++++++++++ ...ent_generator_core_response_replacement.py | 22 ++++++++++++++++ 5 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 .chronus/changes/python-response-replacement-mock-api-tests-2026-9-18-2-0-7.md create mode 100644 packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_response_replacement_async.py create mode 100644 packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_response_replacement.py diff --git a/.chronus/changes/python-response-replacement-mock-api-tests-2026-9-18-2-0-7.md b/.chronus/changes/python-response-replacement-mock-api-tests-2026-9-18-2-0-7.md new file mode 100644 index 00000000000..5f9ff96add6 --- /dev/null +++ b/.chronus/changes/python-response-replacement-mock-api-tests-2026-9-18-2-0-7.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +Add mock API tests for client response replacement. diff --git a/packages/http-client-python/package-lock.json b/packages/http-client-python/package-lock.json index 68ccfe2a0af..2e8621ee6ad 100644 --- a/packages/http-client-python/package-lock.json +++ b/packages/http-client-python/package-lock.json @@ -17,7 +17,7 @@ "tsx": "^4.23.13" }, "devDependencies": { - "@azure-tools/azure-http-specs": "0.1.0-alpha.45", + "@azure-tools/azure-http-specs": "0.1.0-alpha.46-dev.2", "@azure-tools/typespec-autorest": "~0.72.0", "@azure-tools/typespec-azure-core": "~0.72.0", "@azure-tools/typespec-azure-resource-manager": "~0.72.0", @@ -67,9 +67,9 @@ } }, "node_modules/@azure-tools/azure-http-specs": { - "version": "0.1.0-alpha.45", - "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.45.tgz", - "integrity": "sha1-nxpqhlpgMEwA2O+fVIWLtweSELU=", + "version": "0.1.0-alpha.46-dev.2", + "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.46-dev.2.tgz", + "integrity": "sha512-NjoNs4Nnc4I2vJR5cmJBLEmILWbbbNf/hd1B8N8ltH0lBAXWXx/XDo+TTCZej1KB4tcQp5SqSKOV8/ITOhTy6g==", "dev": true, "license": "MIT", "dependencies": { @@ -80,7 +80,7 @@ "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.72.0", + "@azure-tools/typespec-azure-core": "^0.72.0 || >= 0.73.0-dev.1", "@typespec/compiler": "^1.16.0", "@typespec/http": "^1.16.0", "@typespec/rest": "^0.86.0", diff --git a/packages/http-client-python/package.json b/packages/http-client-python/package.json index dcce8fb07b9..bccaddc65da 100644 --- a/packages/http-client-python/package.json +++ b/packages/http-client-python/package.json @@ -109,7 +109,7 @@ "@azure-tools/typespec-azure-resource-manager": "~0.72.0", "@azure-tools/typespec-azure-rulesets": "~0.72.0", "@azure-tools/typespec-client-generator-core": "~0.72.0", - "@azure-tools/azure-http-specs": "0.1.0-alpha.45", + "@azure-tools/azure-http-specs": "0.1.0-alpha.46-dev.2", "@typespec/compiler": "^1.16.0", "@typespec/http": "^1.16.0", "@typespec/openapi": "^1.16.0", diff --git a/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_response_replacement_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_response_replacement_async.py new file mode 100644 index 00000000000..00693abd565 --- /dev/null +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_response_replacement_async.py @@ -0,0 +1,25 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +import pytest +import pytest_asyncio +from _specs_.azure.clientgenerator.core.responsereplacement.aio import ResponseReplacementClient +from _specs_.azure.clientgenerator.core.responsereplacement.models import Widget + + +@pytest_asyncio.fixture +async def client(): + async with ResponseReplacementClient() as client: + yield client + + +@pytest.mark.asyncio +async def test_void_response(client: ResponseReplacementClient): + assert await client.void_response() == Widget(name="widget") + + +@pytest.mark.asyncio +async def test_bytes_response(client: ResponseReplacementClient): + assert await client.bytes_response() == Widget(name="widget") diff --git a/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_response_replacement.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_response_replacement.py new file mode 100644 index 00000000000..f3a9dca3807 --- /dev/null +++ b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_response_replacement.py @@ -0,0 +1,22 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +import pytest +from _specs_.azure.clientgenerator.core.responsereplacement import ResponseReplacementClient +from _specs_.azure.clientgenerator.core.responsereplacement.models import Widget + + +@pytest.fixture +def client(): + with ResponseReplacementClient() as client: + yield client + + +def test_void_response(client: ResponseReplacementClient): + assert client.void_response() == Widget(name="widget") + + +def test_bytes_response(client: ResponseReplacementClient): + assert client.bytes_response() == Widget(name="widget")