Files
cleveragents-core/robot/devcontainer_handler.robot
freemo a05f4c69a7
CI / lint (pull_request) Failing after 19s
CI / typecheck (pull_request) Successful in 46s
CI / quality (pull_request) Successful in 34s
CI / security (pull_request) Successful in 1m0s
CI / coverage (pull_request) Has been skipped
CI / build (pull_request) Successful in 17s
CI / helm (pull_request) Successful in 22s
CI / unit_tests (pull_request) Successful in 7m9s
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 17m9s
CI / integration_tests (pull_request) Failing after 23m2s
CI / status-check (pull_request) Failing after 2s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
fix(resources): support multiple named devcontainer configurations in auto-discovery
Extend DevcontainerDiscoveryResult and discover_devcontainers() to scan
.devcontainer/<name>/devcontainer.json patterns (one subdirectory level)
in addition to the existing fixed paths. Each named configuration produces
a distinct result with config_name set to the subdirectory name (e.g.
'api', 'frontend'). Root-level configs retain config_name=None.

- Replace _SCAN_PATHS with _FIXED_SCAN_PATHS for root-level configs
- Add glob-based scan of .devcontainer/<name>/devcontainer.json
- Add config_name: str | None attribute to DevcontainerDiscoveryResult
- Validate config_name (must be non-empty str or None)
- Add 8 new Behave scenarios covering named, multiple, mixed, empty cases
- Add 4 new Robot Framework integration tests for named config discovery
- All existing tests continue to pass (no regression)

ISSUES CLOSED: #2615
2026-04-05 18:08:56 +00:00

122 lines
5.6 KiB
Plaintext

*** Settings ***
Documentation Integration tests for devcontainer handler CLI round-trip and DAG hierarchy
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_devcontainer_handler.py
*** Test Cases ***
DevcontainerHandler Protocol Conformance
[Documentation] Verify DevcontainerHandler satisfies ResourceHandler protocol
${result}= Run Process ${PYTHON} ${HELPER} protocol-check cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} protocol-check-ok
DevcontainerHandler Default Strategy
[Documentation] Verify DevcontainerHandler uses snapshot strategy
${result}= Run Process ${PYTHON} ${HELPER} strategy-check cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} strategy-check-ok
Devcontainer Discovery Valid Config
[Documentation] Discover devcontainer from directory with valid config
${result}= Run Process ${PYTHON} ${HELPER} discovery-valid cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-valid-ok
Devcontainer Discovery Invalid JSON
[Documentation] Skip invalid devcontainer.json during discovery
${result}= Run Process ${PYTHON} ${HELPER} discovery-invalid cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-invalid-ok
Devcontainer Discovery Root Config
[Documentation] Discover root-level .devcontainer.json
${result}= Run Process ${PYTHON} ${HELPER} discovery-root cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-root-ok
Devcontainer Discovery Non-Trigger Type
[Documentation] No discovery for non-trigger resource types
${result}= Run Process ${PYTHON} ${HELPER} discovery-nontrigger cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-nontrigger-ok
Builtin Types Include Devcontainer
[Documentation] Verify devcontainer types in BUILTIN_NAMES
${result}= Run Process ${PYTHON} ${HELPER} builtin-types cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} builtin-types-ok
DAG Hierarchy Validation
[Documentation] Verify devcontainer type parent/child DAG constraints
${result}= Run Process ${PYTHON} ${HELPER} dag-hierarchy cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} dag-hierarchy-ok
Handler Resolver Dynamic Import
[Documentation] Verify resolve_handler loads DevcontainerHandler dynamically
${result}= Run Process ${PYTHON} ${HELPER} resolver-import cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} resolver-import-ok
Discovery Result Validation
[Documentation] Verify DevcontainerDiscoveryResult validates inputs
${result}= Run Process ${PYTHON} ${HELPER} result-validation cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} result-validation-ok
Devcontainer Discovery Named Single Config
[Documentation] Discover a single named devcontainer configuration
${result}= Run Process ${PYTHON} ${HELPER} discovery-named-single cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-named-single-ok
Devcontainer Discovery Named Multiple Configs
[Documentation] Discover multiple named devcontainer configurations
${result}= Run Process ${PYTHON} ${HELPER} discovery-named-multiple cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-named-multiple-ok
Devcontainer Discovery Named Mixed Root And Named
[Documentation] Discover mixed root and named devcontainer configurations
${result}= Run Process ${PYTHON} ${HELPER} discovery-named-mixed cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-named-mixed-ok
Devcontainer Discovery Named Config Name Attribute
[Documentation] Verify config_name attribute on DevcontainerDiscoveryResult
${result}= Run Process ${PYTHON} ${HELPER} discovery-named-config-name-attr cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} discovery-named-config-name-attr-ok