forked from cleveragents/cleveragents-core
279c6112ae
Added three new built-in resource types: container-instance, devcontainer-instance, and devcontainer-file. The devcontainer-instance type inherits from container-instance per ADR-042 and is auto-discovered when git-checkout or fs-directory resources contain .devcontainer/ directories per ADR-043. Implementation includes: - DevcontainerHandler extending BaseResourceHandler with snapshot strategy - Auto-discovery module scanning .devcontainer/devcontainer.json and root .devcontainer.json with JSON validation - CLI support for devcontainer-instance and container-instance via agents resource add with --path and --image flags - Behave feature with 22 scenarios covering manual registration, auto-discovery, invalid JSON handling, and protocol conformance - Robot integration tests with 10 test cases for CLI round-trip and DAG hierarchy validation - ASV benchmarks measuring discovery throughput with varying subdirectory counts, handler resolver cache performance, and result construction - Reference documentation at docs/reference/devcontainer_resources.md ISSUES CLOSED: #511
90 lines
4.0 KiB
Plaintext
90 lines
4.0 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
|