Files
cleveragents-core/robot/devcontainer_handler.robot
T
freemo 279c6112ae
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 17s
CI / security (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 34s
CI / unit_tests (pull_request) Successful in 1m48s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m26s
CI / coverage (pull_request) Successful in 4m15s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 17s
CI / typecheck (push) Successful in 31s
CI / security (push) Successful in 31s
CI / benchmark-regression (push) Has been skipped
CI / build (push) Successful in 17s
CI / unit_tests (push) Successful in 3m1s
CI / integration_tests (push) Successful in 4m28s
CI / docker (push) Successful in 1m1s
CI / coverage (push) Successful in 4m33s
CI / benchmark-publish (push) Successful in 14m26s
CI / benchmark-regression (pull_request) Successful in 25m42s
feat(resource): add devcontainer resource type and auto-discovery handler
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
2026-03-02 22:09:37 -05:00

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