Files
cleveragents-core/robot/binding_resolution.robot
freemo b122ec7ed5
CI / lint (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 51s
CI / typecheck (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 55s
CI / build (pull_request) Successful in 25s
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 26s
CI / e2e_tests (pull_request) Successful in 3m38s
CI / integration_tests (pull_request) Successful in 6m42s
CI / unit_tests (pull_request) Successful in 8m19s
CI / docker (pull_request) Successful in 13s
CI / coverage (pull_request) Successful in 15m23s
CI / status-check (pull_request) Successful in 2s
fix(test-infra): remove redundant ${PYTHON} variable definitions from robot files
Remove the local ${PYTHON}    python (and python3) variable definitions from
the *** Variables *** sections of all affected robot files. These local
definitions were overriding the pabot-injected venv Python path passed via
--variable PYTHON:/path/to/venv/python, causing tests to use the system
Python (which lacks required packages like structlog, sqlalchemy, etc.)
instead of the nox venv Python.

The correct ${PYTHON} value is already set by Setup Test Environment in
common.resource via sys.executable, and pabot passes it via --variable.
The local fallback definitions are redundant and harmful in parallel runs.

Audit found 56 robot files with the pattern (more than the 9 originally
identified in the issue). All occurrences have been removed.

ISSUES CLOSED: #1309
2026-04-14 14:50:55 +00:00

83 lines
6.0 KiB
Plaintext

*** Settings ***
Documentation Binding Resolution Service Smoke Tests
Library Process
Library OperatingSystem
*** Test Cases ***
Contextual Binding Resolves Single Resource
[Documentation] Resolve a contextual slot with one matching linked resource
${script}= Catenate SEPARATOR=\n
... from unittest.mock import MagicMock
... from cleveragents.core.exceptions import NotFoundError
... from cleveragents.domain.models.core.resource import Resource, PhysVirt
... from cleveragents.domain.models.core.resource_type import ResourceTypeSpec, ResourceKind, SandboxStrategy
... from cleveragents.domain.models.core.project import NamespacedProject, LinkedResource
... from cleveragents.domain.models.core.tool import Tool, ToolSource, ToolType, ResourceSlot, ResourceAccessMode, BindingMode
... from cleveragents.application.services.binding_resolution_service import BindingResolutionService
... registry = MagicMock()
... res = Resource(resource_id="01HGZ6FE0AQDYTR4BX00000001", name=None, resource_type_name="git-checkout", classification=PhysVirt.PHYSICAL)
... registry.show_resource = lambda x: res
... registry.show_type = lambda x: ResourceTypeSpec(name="git-checkout", resource_kind=ResourceKind.PHYSICAL, sandbox_strategy=SandboxStrategy.NONE, built_in=True)
... project = NamespacedProject(name="proj", namespace="local", linked_resources=[LinkedResource(resource_id="01HGZ6FE0AQDYTR4BX00000001", alias="repo")])
... tool = Tool(name="local/reader", description="Read", source=ToolSource.BUILTIN, tool_type=ToolType.TOOL, resource_slots=[ResourceSlot(name="repo", resource_type="git-checkout", access=ResourceAccessMode.READ_WRITE, binding=BindingMode.CONTEXTUAL)])
... svc = BindingResolutionService(registry)
... results = svc.resolve(tool, project)
... assert len(results) == 1, f"Expected 1 result, got {len(results)}"
... assert results[0].binding_mode == "contextual"
... assert results[0].resource_id == "01HGZ6FE0AQDYTR4BX00000001"
... assert not results[0].deferred
... print("Contextual binding resolution passed")
${result}= Run Process ${PYTHON} -c ${script}
Should Be Equal As Integers ${result.rc} 0 Contextual binding test failed: ${result.stderr}
Should Contain ${result.stdout} Contextual binding resolution passed
Static Binding Resolves Named Resource
[Documentation] Resolve a static slot bound to a named resource
${script}= Catenate SEPARATOR=\n
... from unittest.mock import MagicMock
... from cleveragents.core.exceptions import NotFoundError
... from cleveragents.domain.models.core.resource import Resource, PhysVirt
... from cleveragents.domain.models.core.resource_type import ResourceTypeSpec, ResourceKind, SandboxStrategy
... from cleveragents.domain.models.core.project import NamespacedProject
... from cleveragents.domain.models.core.tool import Tool, ToolSource, ToolType, ResourceSlot, ResourceAccessMode, BindingMode
... from cleveragents.application.services.binding_resolution_service import BindingResolutionService
... registry = MagicMock()
... res = Resource(resource_id="01HGZ6FE0AQDYTR4BX00000020", name="local/shared-config", resource_type_name="fs-directory", classification=PhysVirt.PHYSICAL)
... registry.show_resource = lambda x: res
... registry.show_type = lambda x: ResourceTypeSpec(name="fs-directory", resource_kind=ResourceKind.PHYSICAL, sandbox_strategy=SandboxStrategy.NONE, built_in=True)
... project = NamespacedProject(name="proj", namespace="local")
... tool = Tool(name="local/deployer", description="Deploy", source=ToolSource.BUILTIN, tool_type=ToolType.TOOL, resource_slots=[ResourceSlot(name="config_dir", resource_type="fs-directory", access=ResourceAccessMode.READ_ONLY, binding=BindingMode.STATIC, static_resource="local/shared-config")])
... svc = BindingResolutionService(registry)
... results = svc.resolve(tool, project)
... assert len(results) == 1
... assert results[0].binding_mode == "static"
... assert results[0].resource_id == "01HGZ6FE0AQDYTR4BX00000020"
... assert not results[0].deferred
... print("Static binding resolution passed")
${result}= Run Process ${PYTHON} -c ${script}
Should Be Equal As Integers ${result.rc} 0 Static binding test failed: ${result.stderr}
Should Contain ${result.stdout} Static binding resolution passed
Parameter Binding Is Deferred
[Documentation] Parameter binding returns a deferred result
${script}= Catenate SEPARATOR=\n
... from cleveragents.domain.models.core.project import NamespacedProject
... from cleveragents.domain.models.core.tool import Tool, ToolSource, ToolType, ResourceSlot, ResourceAccessMode, BindingMode
... from cleveragents.application.services.binding_resolution_service import BindingResolutionService
... from unittest.mock import MagicMock
... registry = MagicMock()
... project = NamespacedProject(name="proj", namespace="local")
... tool = Tool(name="local/builder", description="Build", source=ToolSource.BUILTIN, tool_type=ToolType.TOOL, resource_slots=[ResourceSlot(name="target", resource_type="fs-directory", access=ResourceAccessMode.READ_WRITE, binding=BindingMode.PARAMETER)])
... svc = BindingResolutionService(registry)
... results = svc.resolve(tool, project)
... assert len(results) == 1
... assert results[0].binding_mode == "parameter"
... assert results[0].deferred is True
... assert results[0].resource_id is None
... print("Parameter binding deferred passed")
${result}= Run Process ${PYTHON} -c ${script}
Should Be Equal As Integers ${result.rc} 0 Parameter binding test failed: ${result.stderr}
Should Contain ${result.stdout} Parameter binding deferred passed
*** Keywords ***