fix(tests): update stale mock patch targets after validation helper refactor

The PR moved `_get_tool_registry_service` from a private helper in
`validation.py` to a public `get_tool_registry_service` in
`validation_helpers.py`, re-exported into the `validation` module
namespace. All test files that patched the old private name via
`mock.patch()` raised `AttributeError` at runtime.

Updated all 14 affected files to patch the public name:
- features/steps/: 8 step files updated patch targets and direct imports
- robot/: 4 helper scripts updated patch targets
- benchmarks/: 2 benchmark files updated patch targets

Also fixed `validation_list_command_steps.py`:
- Added `patch` import
- Added proper `get_tool_registry_service` patcher in all @given steps
  so the CLI is mocked correctly during scenario execution
- Removed invalid import from non-existent `validation_app` module

ISSUES CLOSED: #8667
This commit is contained in:
2026-06-02 11:17:47 -04:00
committed by drew
parent 796ddd81ac
commit f58a6c64be
14 changed files with 56 additions and 26 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ class M3ValidationAddSuite:
}
self._mock_service.register_tool.return_value = mock_validation
self._patcher = patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=self._mock_service,
)
self._patcher.start()
+1 -1
View File
@@ -162,7 +162,7 @@ class ValidationCLIAddSuite:
)
self._mock_service.get_tool.return_value = None
self._patcher = patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=self._mock_service,
)
self._patcher.start()
@@ -58,7 +58,7 @@ def step_m3_smoke_mock_env(context: Context) -> None:
return_value=context.mock_invariant_service,
)
context.validation_patcher = patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=context.mock_tool_registry_service,
)
context.plan_patcher = patch(
@@ -54,11 +54,11 @@ def step_tdd_di_container_has_provider(context: Context) -> None:
@when("_get_tool_registry_service is called with the mocked container")
def step_tdd_di_call_function(context: Context) -> None:
"""Call _get_tool_registry_service with the mocked container injected."""
from cleveragents.cli.commands.validation import _get_tool_registry_service
"""Call get_tool_registry_service with the mocked container injected."""
from cleveragents.cli.commands.validation_helpers import get_tool_registry_service
with patch(_PATCH_GET_CONTAINER, return_value=context.tdd_di_mock_container):
context.tdd_di_returned_service = _get_tool_registry_service()
context.tdd_di_returned_service = get_tool_registry_service()
@then("the returned service should be the one from container.tool_registry_service")
@@ -31,7 +31,7 @@ from cleveragents.cli.commands.validation import app as validation_app
_runner = CliRunner()
_PATCH_SVC = "cleveragents.cli.commands.validation._get_tool_registry_service"
_PATCH_SVC = "cleveragents.cli.commands.validation.get_tool_registry_service"
_VALID_MODES = {"required", "informational"}
+1 -1
View File
@@ -35,7 +35,7 @@ def _patch_tool_svc(context: Context) -> Any:
def _patch_val_svc(context: Context) -> Any:
return patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=context.mock_service,
)
+1 -1
View File
@@ -91,7 +91,7 @@ def _patch_tool_svc(context: Context) -> Any:
def _patch_val_svc(context: Context) -> Any:
return patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=context.mock_service,
)
@@ -35,7 +35,7 @@ def step_type_guard_mock_env(context: Context) -> None:
context.mock_tool_registry_service = MagicMock()
context.validation_patcher = patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=context.mock_tool_registry_service,
)
context.validation_patcher.start()
@@ -32,7 +32,7 @@ _runner = CliRunner()
_PATCH_GET_CONTAINER = "cleveragents.application.container.get_container"
# For the detach scenario we still patch the whole helper to isolate DB access.
_PATCH_VAL_SVC = "cleveragents.cli.commands.validation._get_tool_registry_service"
_PATCH_VAL_SVC = "cleveragents.cli.commands.validation.get_tool_registry_service"
# ---------------------------------------------------------------------------
@@ -89,10 +89,10 @@ def step_vcb_di_container(context: Context) -> None:
@when("the validation cli branch _get_tool_registry_service is called")
def step_vcb_call_get_tool_registry_service(context: Context) -> None:
from cleveragents.cli.commands.validation import _get_tool_registry_service
from cleveragents.cli.commands.validation_helpers import get_tool_registry_service
with patch(_PATCH_GET_CONTAINER, return_value=context.vcb_mock_container):
context.vcb_returned_service = _get_tool_registry_service()
context.vcb_returned_service = get_tool_registry_service()
@then("the validation cli branch returned service should be a ToolRegistryService")
@@ -7,7 +7,7 @@ from typing import Any
import yaml
from behave import given, then, when
from typer.testing import CliRunner
from unittest.mock import MagicMock
from unittest.mock import MagicMock, patch
def _make_validation(
@@ -53,6 +53,14 @@ def _make_attachment(
def step_validate_list_runner(context: Any) -> None:
"""Set up a CliRunner for the validation CLI app."""
context.validation_list_runner = CliRunner(mix_stderr=False)
mock_service = MagicMock()
mock_service.list_tools.return_value = []
patcher = patch(
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_service,
)
patcher.start()
context.add_cleanup(patcher.stop)
@given("a tool registry with registered validation tools")
@@ -80,8 +88,12 @@ def step_mock_validation_service_with_tools(context: Any) -> None:
mock_service.list_tools.return_value = validations
mock_service.get_tool.return_value = None
from cleveragents.cli.commands.validation_app import app as validation_app # noqa: F401
patcher = patch(
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_service,
)
patcher.start()
context.add_cleanup(patcher.stop)
context.mock_validation_service = mock_service
@@ -102,6 +114,12 @@ def step_mock_namespaced_validations(context: Any) -> None:
mock_service = MagicMock()
mock_service.list_tools.return_value = validations
patcher = patch(
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_service,
)
patcher.start()
context.add_cleanup(patcher.stop)
context.mock_validation_service = mock_service
@@ -128,6 +146,12 @@ def step_mock_sourced_validations(context: Any) -> None:
mock_service = MagicMock()
mock_service.list_tools.return_value = validations
patcher = patch(
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_service,
)
patcher.start()
context.add_cleanup(patcher.stop)
context.mock_validation_service = mock_service
@@ -148,6 +172,12 @@ def step_mock_numbered_validations(context: Any) -> None:
mock_service = MagicMock()
mock_service.list_tools.return_value = validations
patcher = patch(
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_service,
)
patcher.start()
context.add_cleanup(patcher.stop)
context.mock_validation_service = mock_service
+3 -3
View File
@@ -189,7 +189,7 @@ def validation_add() -> None:
}
mock_svc.register_tool.return_value = mock_validation
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(
@@ -218,7 +218,7 @@ def validation_attach() -> None:
mock_attachment.created_at = "2026-01-01T00:00:00"
mock_svc.attach_validation.return_value = mock_attachment
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(
@@ -243,7 +243,7 @@ def validation_detach() -> None:
mock_svc = MagicMock()
mock_svc.detach_validation.return_value = True
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(
+1 -1
View File
@@ -41,7 +41,7 @@ from cleveragents.cli.commands.validation import app as validation_app # noqa:
runner: CliRunner = CliRunner()
_PATCH_SVC: str = "cleveragents.cli.commands.validation._get_tool_registry_service"
_PATCH_SVC: str = "cleveragents.cli.commands.validation.get_tool_registry_service"
def _fail(message: str) -> NoReturn:
+3 -3
View File
@@ -151,7 +151,7 @@ def validation_add_config() -> None:
svc.register_tool.return_value = _mock_tool("local/smoke-val", "validation")
svc.get_tool.return_value = None
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=svc,
):
result = runner.invoke(validation_app, ["add", "--config", path])
@@ -166,7 +166,7 @@ def validation_attach() -> None:
svc = MagicMock()
svc.attach_validation.return_value = _mock_attachment()
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=svc,
):
result = runner.invoke(
@@ -182,7 +182,7 @@ def validation_detach() -> None:
svc = MagicMock()
svc.detach_validation.return_value = True
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=svc,
):
result = runner.invoke(
+3 -3
View File
@@ -41,7 +41,7 @@ def attach_plain_tool_rejected() -> None:
actual_type="tool",
)
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(
@@ -79,7 +79,7 @@ def attach_validation_accepted() -> None:
mock_attachment.created_at = "2026-01-01T00:00:00"
mock_svc.attach_validation.return_value = mock_attachment
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(
@@ -107,7 +107,7 @@ def attach_plain_tool_dict_rejected() -> None:
actual_type="tool",
)
with patch(
"cleveragents.cli.commands.validation._get_tool_registry_service",
"cleveragents.cli.commands.validation.get_tool_registry_service",
return_value=mock_svc,
):
result = runner.invoke(