372ef09153
CI / push-validation (pull_request) Successful in 24s
CI / helm (pull_request) Successful in 51s
CI / build (pull_request) Successful in 51s
CI / lint (pull_request) Successful in 1m8s
CI / typecheck (pull_request) Successful in 1m9s
CI / quality (pull_request) Successful in 1m9s
CI / security (pull_request) Successful in 1m26s
CI / unit_tests (pull_request) Successful in 6m21s
CI / integration_tests (pull_request) Successful in 8m34s
CI / docker (pull_request) Successful in 1m38s
CI / coverage (pull_request) Successful in 9m16s
CI / status-check (pull_request) Successful in 5s
- Add _apply_output_dict() building the spec-required JSON envelope - Update lifecycle_apply_plan to use _apply_output_dict for --format json - Rewrite robot file to use Run Process + helper dispatch pattern - Rewrite robot helper to use real LifecyclePlan domain objects - Apply ruff format to plan_apply_json_envelope_steps.py
115 lines
5.9 KiB
Plaintext
115 lines
5.9 KiB
Plaintext
*** Settings ***
|
|
Documentation Integration tests for ``plan apply --format json`` JSON envelope output.
|
|
Resource ${CURDIR}/common.resource
|
|
Suite Setup Setup Test Environment With Database Isolation
|
|
Suite Teardown Cleanup Test Environment
|
|
|
|
*** Variables ***
|
|
${HELPER} ${CURDIR}/helper_plan_apply_json_envelope.py
|
|
|
|
*** Test Cases ***
|
|
Envelope Has All Required Top-Level Fields
|
|
[Documentation] Verify that the plan apply JSON envelope contains all required top-level keys.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_top_level_fields cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Envelope Command Is Plan Apply
|
|
[Documentation] Verify command field equals "plan apply".
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_command_field cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Envelope Status Is Ok
|
|
[Documentation] Verify status field equals "ok".
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_status_field cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Envelope Exit Code Is Zero
|
|
[Documentation] Verify exit_code is 0.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_exit_code cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Messages Is Non-Empty List
|
|
[Documentation] Verify messages field is a non-empty list.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_messages_non_empty cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Data Contains All Required Sub-Fields
|
|
[Documentation] Verify the data field contains artifacts, changes, project, applied_at, validation, sandbox_cleanup, and lifecycle.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_data_sub_fields cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Validation Contains Test Lint Type Check
|
|
[Documentation] Verify data.validation contains test, lint, and type_check fields.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_validation_sub_fields cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Lifecycle Contains Required Sub-Fields
|
|
[Documentation] Verify data.lifecycle contains phase, state, total_duration, total_cost, decisions_made, child_plans.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_lifecycle_sub_fields cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Sandbox Cleanup Contains Worktree Branch Checkpoint
|
|
[Documentation] Verify data.sandbox_cleanup contains worktree, branch, and checkpoint.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_sandbox_cleanup_sub_fields cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Terminal Plan Sandbox Cleanup Is Removed Merged Archived
|
|
[Documentation] Verify sandbox_cleanup shows removed/merged/archived for terminal apply plans.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_terminal_sandbox_cleanup cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
NonTerminal Plan Sandbox Cleanup Is Active Open Pending
|
|
[Documentation] Verify sandbox_cleanup shows active/open/pending for non-terminal apply plans.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_non_terminal_sandbox_cleanup cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Legacy Plan Fallback Works
|
|
[Documentation] Verify _apply_output_dict handles non-Plan objects gracefully.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_legacy_fallback cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Cost Metadata Reflected In Lifecycle Total Cost
|
|
[Documentation] Verify total_cost reflects plan cost_metadata when present.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_cost_metadata cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Plan Status Does Not Use Apply Envelope
|
|
[Documentation] Verify plan status --format json does NOT emit the apply envelope command field.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_status_no_apply_envelope cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
|
|
Plan Cancel Does Not Use Apply Envelope
|
|
[Documentation] Verify plan cancel --format json does NOT emit the apply envelope command field.
|
|
${result}= Run Process ${PYTHON} ${HELPER} verify_cancel_no_apply_envelope cwd=${WORKSPACE} timeout=180s on_timeout=kill
|
|
Log ${result.stdout}
|
|
Log ${result.stderr}
|
|
Should Be Equal As Integers ${result.rc} 0
|