Files
cleveragents-core/features/plan_cli_coverage_r2.feature
freemo bc0852111b
CI / lint (push) Waiting to run
CI / typecheck (push) Waiting to run
CI / security (push) Waiting to run
CI / quality (push) Waiting to run
CI / unit_tests (push) Waiting to run
CI / integration_tests (push) Waiting to run
CI / e2e_tests (push) Waiting to run
CI / coverage (push) Blocked by required conditions
CI / benchmark-regression (push) Blocked by required conditions
CI / benchmark-publish (push) Waiting to run
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
CI / helm (push) Waiting to run
CI / status-check (push) Blocked by required conditions
fix(cli): add checkpoint label, creation time, and side effects to rollback confirmation prompt
Reviewed and APPROVED. Closes #3443.
2026-04-05 21:06:55 +00:00

276 lines
13 KiB
Gherkin
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Feature: Plan CLI coverage round 2 remaining uncovered lines
As a developer
I want to exercise the remaining uncovered lines in plan.py
So that coverage gaps at lines 724, 737-741, 832-833, 879-883,
930-931, 1007-1008, 1094-1095, 1108-1115, 1223-1245,
1469-1481, 1565-1578, 2588-2598, 2616-2618, 2691-2762 are closed
# ===================================================================
# Legacy build command >5 changes truncation (line 724)
# ===================================================================
Scenario: Legacy build shows truncation message when more than 5 changes
Given a r2cov CLI runner
And a mocked legacy container for r2cov build returning 8 changes
When I invoke r2cov legacy build
Then the r2cov command should exit normally
And the r2cov output should contain "and 3 more"
# ===================================================================
# Legacy build command — PlanError handler (lines 737-738)
# ===================================================================
Scenario: Legacy build raises PlanError
Given a r2cov CLI runner
And a mocked legacy container for r2cov build that raises PlanError
When I invoke r2cov legacy build
Then the r2cov command should abort
And the r2cov output should contain "Build Error"
# ===================================================================
# Legacy build command — CleverAgentsError handler (lines 740-741)
# ===================================================================
Scenario: Legacy build raises CleverAgentsError
Given a r2cov CLI runner
And a mocked legacy container for r2cov build that raises CleverAgentsError
When I invoke r2cov legacy build
Then the r2cov command should abort
And the r2cov output should contain "Error"
# ===================================================================
# Legacy new command — ValidationError handler (lines 879-880)
# ===================================================================
Scenario: Legacy new raises ValidationError
Given a r2cov CLI runner
And a mocked legacy container for r2cov new that raises ValidationError
When I invoke r2cov legacy new "bad-name"
Then the r2cov command should abort
And the r2cov output should contain "Validation Error"
# ===================================================================
# Legacy new command — CleverAgentsError handler (lines 882-883)
# ===================================================================
Scenario: Legacy new raises CleverAgentsError
Given a r2cov CLI runner
And a mocked legacy container for r2cov new that raises CleverAgentsError
When I invoke r2cov legacy new "bad-name"
Then the r2cov command should abort
And the r2cov output should contain "Error"
# ===================================================================
# Legacy current command — CleverAgentsError handler (lines 930-931)
# ===================================================================
Scenario: Legacy current raises CleverAgentsError
Given a r2cov CLI runner
And a mocked legacy container for r2cov current that raises CleverAgentsError
When I invoke r2cov legacy current
Then the r2cov command should abort
And the r2cov output should contain "Error"
# ===================================================================
# Legacy continue command — CleverAgentsError handler (lines 1094-1095)
# ===================================================================
Scenario: Legacy continue raises CleverAgentsError
Given a r2cov CLI runner
And a mocked legacy container for r2cov continue that raises CleverAgentsError
When I invoke r2cov legacy continue
Then the r2cov command should abort
And the r2cov output should contain "Error"
# ===================================================================
# _get_lifecycle_service body (lines 1108-1115)
# ===================================================================
Scenario: _get_lifecycle_service creates a PlanLifecycleService
Given a r2cov CLI runner
And a mocked container for r2cov lifecycle service construction
When I call r2cov _get_lifecycle_service
Then the r2cov lifecycle service should be returned
# ===================================================================
# Multi-project scopes in _print_lifecycle_plan (lines 1223-1245)
# ===================================================================
Scenario: Lifecycle plan display with multi-project scopes and changeset summaries
Given a r2cov CLI runner
And a lifecycle plan with multi-project scopes for r2cov
When I invoke r2cov _print_lifecycle_plan on the plan
Then the r2cov output should contain "Multi-Project Scopes"
And the r2cov output should contain "proj-alpha"
And the r2cov output should contain "Changed:"
Scenario: Multi-project scopes with validation passed and failed
Given a r2cov CLI runner
And a lifecycle plan with multi-project scopes with validation for r2cov
When I invoke r2cov _print_lifecycle_plan on the plan
Then the r2cov output should contain "Validation"
And the r2cov output should contain "PASSED"
# ===================================================================
# use_action — execution_environment validation (lines 1469-1481)
# ===================================================================
Scenario: use_action rejects invalid execution_environment
Given a r2cov CLI runner
And a mocked lifecycle service for r2cov use action
When I invoke r2cov use with execution-environment "invalid_env"
Then the r2cov command should abort
And the r2cov output should contain "Invalid execution environment"
Scenario: use_action accepts valid execution_environment
Given a r2cov CLI runner
And a mocked lifecycle service for r2cov use action
When I invoke r2cov use with execution-environment "container"
Then the r2cov command should exit normally
# ===================================================================
# execute_plan — execution_environment validation (lines 1565-1578)
# ===================================================================
Scenario: execute_plan rejects invalid execution_environment
Given a r2cov CLI runner
And a mocked lifecycle service for r2cov execute with a valid plan
When I invoke r2cov execute with execution-environment "badenv"
Then the r2cov command should abort
And the r2cov output should contain "Invalid execution environment"
Scenario: execute_plan accepts valid execution_environment
Given a r2cov CLI runner
And a mocked lifecycle service for r2cov execute with a valid plan
When I invoke r2cov execute with execution-environment "host"
Then the r2cov command should exit normally
# ===================================================================
# resume_plan rich output branches (lines 2588, 2593, 2598)
# ===================================================================
Scenario: Resume plan rich output shows decision_id, checkpoint, and sandbox_ref
Given a r2cov CLI runner
And a mocked resume service for r2cov with all optional fields
When I invoke r2cov plan resume "PLAN123" in rich format
Then the r2cov command should exit normally
And the r2cov output should contain "Decision ID"
And the r2cov output should contain "Checkpoint"
And the r2cov output should contain "Sandbox"
# ===================================================================
# resume_plan — CleverAgentsError handler (lines 2616-2618)
# ===================================================================
Scenario: Resume plan raises CleverAgentsError
Given a r2cov CLI runner
And a mocked resume service for r2cov that raises CleverAgentsError
When I invoke r2cov plan resume "PLAN123" in rich format
Then the r2cov command should abort
And the r2cov output should contain "Error"
# ===================================================================
# rollback_plan — full command body (lines 2691-2762)
# ===================================================================
Scenario: Rollback plan succeeds with --yes flag in rich format
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that succeeds
When I invoke r2cov plan rollback with --yes
Then the r2cov command should exit normally
And the r2cov output should contain "Rollback Summary"
And the r2cov output should contain "Changes Reverted"
And the r2cov output should contain "Impact"
And the r2cov output should contain "Post-Rollback State"
And the r2cov output should contain "Rollback complete"
Scenario: Rollback plan succeeds in json format
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that succeeds
When I invoke r2cov plan rollback with --yes and --format json
Then the r2cov command should exit normally
And the r2cov output should contain "rollback_summary"
Scenario: Rollback plan raises BusinessRuleViolation
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that raises BusinessRuleViolation
When I invoke r2cov plan rollback with --yes
Then the r2cov command should abort
And the r2cov output should contain "Rollback blocked"
Scenario: Rollback plan raises ResourceNotFoundError
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that raises ResourceNotFoundError
When I invoke r2cov plan rollback with --yes
Then the r2cov command should abort
And the r2cov output should contain "Not found"
Scenario: Rollback plan raises ValidationError
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that raises ValidationError
When I invoke r2cov plan rollback with --yes
Then the r2cov command should abort
And the r2cov output should contain "Validation Error"
Scenario: Rollback plan raises CleverAgentsError
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that raises CleverAgentsError
When I invoke r2cov plan rollback with --yes
Then the r2cov command should abort
And the r2cov output should contain "Error"
Scenario: Rollback plan cancelled when user declines confirmation
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback that succeeds
When I invoke r2cov plan rollback without --yes and decline
Then the r2cov command should abort
And the r2cov output should contain "Rollback cancelled"
# ===================================================================
# rollback_plan — enriched confirmation prompt (issue #3443)
# ===================================================================
Scenario: Rollback confirmation prompt shows checkpoint label and creation time
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback with label "before-db-migration"
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "before-db-migration"
And the r2cov output should contain "created"
Scenario: Rollback confirmation prompt shows side effects when decisions exist
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback with 3 decisions and 1 child plan
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "invalidate 3 decisions"
And the r2cov output should contain "cancel 1 child plan"
Scenario: Rollback confirmation prompt falls back when checkpoint not found
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback where get_checkpoint raises not found
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "Rollback"
Scenario: Rollback confirmation prompt shows only decisions when no child plans
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback with 4 decisions and no child plans
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "invalidate 4 decisions"
Scenario: Rollback confirmation prompt counts parallel spawn decisions as child plans
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback with 2 parallel spawn child plans
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "cancel 2 child plans"
Scenario: Rollback confirmation prompt handles future checkpoint timestamp gracefully
Given a r2cov CLI runner
And a mocked checkpoint service for r2cov rollback with a future checkpoint timestamp
When I invoke r2cov plan rollback without --yes and accept
Then the r2cov command should exit normally
And the r2cov output should contain "just now"