Files
cleveragents-core/features/plan_cli_legacy_r2.feature
T
freemo 3a2b134f3c
CI / lint (pull_request) Successful in 14s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 27s
CI / typecheck (pull_request) Successful in 37s
CI / security (pull_request) Successful in 39s
CI / build (pull_request) Successful in 29s
CI / integration_tests (pull_request) Successful in 5m51s
CI / benchmark-regression (pull_request) Successful in 22m39s
CI / unit_tests (pull_request) Successful in 29m35s
CI / docker (pull_request) Successful in 13s
CI / coverage (pull_request) Successful in 2h3m1s
CI / lint (push) Successful in 21s
CI / typecheck (push) Successful in 57s
CI / security (push) Successful in 51s
CI / quality (push) Successful in 27s
CI / integration_tests (push) Successful in 4m59s
CI / build (push) Successful in 23s
CI / benchmark-publish (push) Successful in 14m39s
CI / benchmark-regression (push) Has been skipped
CI / unit_tests (push) Successful in 29m48s
CI / docker (push) Successful in 15s
CI / coverage (push) Successful in 1h45m42s
test(coverage): add Behave scenarios for remaining under-tested modules
Added Behave BDD feature files and step definitions targeting coverage
gaps in six modules:

- container.py: exercise get_database_url env-var fallback, AI provider
  None path, cached container singleton, override_providers edge cases
  (lines 66-69, 125-130; branches at 51, 57, 82, 87, 256, 284-288)
- correction_service.py: exercise exception-handling paths in
  execute_revert and execute_append via monkeypatched analyze_impact
  and ULID failures (lines 254-262, 320-328)
- plan_lifecycle_service.py: exercise _persisted UoW commit paths,
  InvalidPhaseTransitionError custom message branch, non-reusable
  action archive, and error_details merge logic (branches at 100,
  216, 237, 327, 461, 570, 576, 607)
- plan.py (CLI): exercise spec-dict optional field branches,
  _print_lifecycle_plan conditional rendering, use_action argument
  parsing, auto-resolve paths, legacy wrappers, and validation
  error branches across 66 scenarios
- skill.py (CLI): exercise singleton cache, timestamp-absent show,
  no-tools MCP, add/remove/list/show format and error branches
  across 26 scenarios
- models.py (DB): exercise to_domain/from_domain None-field branches
  in SkillModel, SessionModel, ToolModel, LifecycleActionModel,
  LifecyclePlanModel, NamespacedProjectModel, and SessionMessageModel
  across 41 scenarios

All 302 features, 6503 scenarios, 28271 steps pass (nox -e unit_tests).

ISSUES CLOSED: #446
2026-02-25 19:38:43 -05:00

81 lines
3.9 KiB
Gherkin
Raw 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 legacy wrappers and resolve branch coverage (round 2)
As a developer
I want to exercise uncovered branches in legacy wrappers and _resolve_active_plan_id
So that branch coverage for legacy and resolve logic rises above the current level
# ===================================================================
# Legacy programmatic wrappers no project branch
# ===================================================================
Scenario: r2plan tell_command raises when no project
When r2plan-I call tell_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan build_command raises when no project
When r2plan-I call build_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan apply_command raises when no project
When r2plan-I call apply_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan new_command raises when no project
When r2plan-I call new_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan current_command raises when no project
When r2plan-I call current_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan list_command raises when no project
When r2plan-I call list_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan cd_command raises when no project
When r2plan-I call cd_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
Scenario: r2plan continue_command raises when no project
When r2plan-I call continue_command with no project
Then r2plan-a CleverAgentsError should be raised with message "No project found"
# ===================================================================
# continue_command with prompt vs no-prompt + no current plan
# ===================================================================
Scenario: r2plan continue_command with prompt calls continue_plan
When r2plan-I call continue_command with prompt "add tests"
Then r2plan-the continue_plan service method should be called
Scenario: r2plan continue_command no prompt and no current plan raises
When r2plan-I call continue_command with no prompt and no current plan
Then r2plan-a CleverAgentsError should be raised with message "No current plan"
# ===================================================================
# build_command returns empty list when changes is None
# ===================================================================
Scenario: r2plan build_command returns empty list when None
When r2plan-I call build_command with build returning None
Then r2plan-the build result should be an empty list
# ===================================================================
# list_command returns empty list when plans is None
# ===================================================================
Scenario: r2plan list_command returns empty list when None
When r2plan-I call list_command with list returning None
Then r2plan-the list result should be an empty list
# ===================================================================
# _resolve_active_plan_id no active plans / service error
# ===================================================================
Scenario: r2plan resolve_active_plan_id aborts when no active plans
When r2plan-I call _resolve_active_plan_id with no active plans
Then r2plan-a typer Abort should be raised
Scenario: r2plan resolve_active_plan_id aborts on service error
When r2plan-I call _resolve_active_plan_id with service error
Then r2plan-a typer Abort should be raised