diff --git a/src/pyrecest/_backend/capabilities.py b/src/pyrecest/_backend/capabilities.py index 43bade893..cb545daf5 100644 --- a/src/pyrecest/_backend/capabilities.py +++ b/src/pyrecest/_backend/capabilities.py @@ -203,7 +203,9 @@ def get_api_backend_support(api_name: str) -> dict[str, str]: def iter_api_backend_capabilities() -> tuple[tuple[str, dict[str, str]], ...]: """Return public API backend support rows in a stable order.""" - return tuple(sorted(API_BACKEND_CAPABILITIES.items())) + return tuple( + (api_name, dict(row)) for api_name, row in sorted(API_BACKEND_CAPABILITIES.items()) + ) def validate_api_backend_capabilities() -> tuple[str, ...]: diff --git a/tests/test_backend_capabilities.py b/tests/test_backend_capabilities.py index 3d758e029..8ada79e96 100644 --- a/tests/test_backend_capabilities.py +++ b/tests/test_backend_capabilities.py @@ -20,6 +20,15 @@ def test_api_backend_capability_rows_have_valid_support_levels() -> None: assert support.get("notes") +def test_iter_api_backend_capabilities_returns_row_copies() -> None: + api_name, support = iter_api_backend_capabilities()[0] + original_notes = API_BACKEND_CAPABILITIES[api_name]["notes"] + + support["notes"] = "mutated by caller" + + assert API_BACKEND_CAPABILITIES[api_name]["notes"] == original_notes + + def test_cli_backends_reports_machine_readable_capabilities(capsys) -> None: assert cli_main(["backends"]) == 0 payload = json.loads(capsys.readouterr().out)