52730b0846
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 30s
CI / build (pull_request) Successful in 32s
CI / quality (pull_request) Successful in 44s
CI / lint (pull_request) Successful in 3m18s
CI / typecheck (pull_request) Successful in 3m58s
CI / security (pull_request) Successful in 4m7s
CI / unit_tests (pull_request) Failing after 6m31s
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Failing after 14m6s
CI / coverage (pull_request) Successful in 10m53s
CI / integration_tests (pull_request) Failing after 21m51s
CI / status-check (pull_request) Failing after 1s
CI / benchmark-regression (pull_request) Successful in 55m57s
Add the missing --namespace/-n option to lifecycle_list_plans() in plan.py, mirroring the existing implementation in list_actions() in action.py. The service layer already supported namespace filtering; only the CLI layer was missing the option. Changes: - Add namespace parameter to lifecycle_list_plans() with --namespace/-n option flags and 'Filter plans by namespace' help text - Pass namespace through to service.list_plans(namespace=namespace, ...) - Update TUI Filters panel to display 'Namespace: <value>' when provided - Add usage examples to command docstring - Add 4 Behave unit test scenarios covering --namespace/-n option - Add 2 Robot Framework integration tests verifying namespace filtering ISSUES CLOSED: #2165
144 lines
6.0 KiB
Gherkin
144 lines
6.0 KiB
Gherkin
Feature: Plan CLI spec alignment
|
|
As a developer
|
|
I want the plan CLI commands aligned to the v3 spec
|
|
So that plan use/list/status flags are consistent with the specification
|
|
|
|
Background:
|
|
Given a plan spec alignment CLI runner
|
|
And a plan spec alignment mocked lifecycle service
|
|
|
|
# ---- plan use: multiple projects (positional) ----
|
|
Scenario: Plan use with multiple positional projects
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with positional projects "proj-a" and "proj-b"
|
|
Then the plan spec use should succeed
|
|
And the plan spec use should link projects "proj-a" and "proj-b"
|
|
|
|
# ---- plan use: --automation-profile ----
|
|
Scenario: Plan use with --automation-profile
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with automation profile "trusted"
|
|
Then the plan spec use should succeed
|
|
And the plan spec output should contain "Automation Profile"
|
|
|
|
# ---- plan use: --invariant (repeatable) ----
|
|
Scenario: Plan use with repeatable --invariant
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with invariants "No warnings" and "Keep compat"
|
|
Then the plan spec use should succeed
|
|
And the plan spec use should pass invariants to service
|
|
|
|
# ---- plan use: actor override flags ----
|
|
Scenario: Plan use with strategy-actor override
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with strategy actor "openai/gpt-4"
|
|
Then the plan spec use should succeed
|
|
And the plan spec output should contain "Strategy Actor"
|
|
|
|
Scenario: Plan use with execution-actor override
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with execution actor "anthropic/claude-3"
|
|
Then the plan spec use should succeed
|
|
And the plan spec output should contain "Execution Actor"
|
|
|
|
Scenario: Plan use with estimation-actor override
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with estimation actor "openai/gpt-4"
|
|
Then the plan spec use should succeed
|
|
And the plan spec output should contain "Estimation Actor"
|
|
|
|
Scenario: Plan use with invariant-actor override
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with invariant actor "openai/gpt-4"
|
|
Then the plan spec use should succeed
|
|
And the plan spec output should contain "Invariant Actor"
|
|
|
|
# ---- plan use: --arg name=value ----
|
|
Scenario: Plan use with --arg name=value
|
|
Given a plan spec alignment action exists
|
|
When I run plan use with arg "target_coverage=80"
|
|
Then the plan spec use should succeed
|
|
And the plan spec use should pass argument "target_coverage" with value 80
|
|
|
|
# ---- plan list: filter combinations ----
|
|
Scenario: Plan list with --namespace filter (long form)
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with namespace "myteam"
|
|
Then the plan spec list should succeed
|
|
And the plan spec list should pass namespace "myteam" to service
|
|
|
|
Scenario: Plan list with -n namespace filter (short form)
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with short namespace "local"
|
|
Then the plan spec list should succeed
|
|
And the plan spec list should pass namespace "local" to service
|
|
|
|
Scenario: Plan list with --namespace shows Namespace in Filters panel
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with namespace "myteam"
|
|
Then the plan spec list should succeed
|
|
And the plan spec list output should contain "Namespace"
|
|
And the plan spec list output should contain "myteam"
|
|
|
|
Scenario: Plan list with --namespace combined with --state
|
|
Given plan spec alignment plans exist
|
|
When I run plan list filtering by namespace "myteam" and processing state "queued"
|
|
Then the plan spec list should succeed
|
|
And the plan spec list should pass namespace "myteam" to service
|
|
|
|
Scenario: Plan list with --phase filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with phase "strategize"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with --state filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with state "queued"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with --processing-state filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with processing-state "complete"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with --project filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with project "proj-a"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with --action filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with action "local/test-action"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with regex filter
|
|
Given plan spec alignment plans exist
|
|
When I run plan list with regex "test-action"
|
|
Then the plan spec list should succeed
|
|
|
|
Scenario: Plan list with combined filters
|
|
Given plan spec alignment plans exist
|
|
When I run plan list combining phase "strategize" with project "proj-a"
|
|
Then the plan spec list should succeed
|
|
|
|
# ---- plan status: output fields ----
|
|
Scenario: Plan status renders all required fields
|
|
Given a plan spec alignment plan exists for status
|
|
When I run plan status for the plan
|
|
Then the plan spec status should succeed
|
|
And the plan spec status should contain "Action"
|
|
And the plan spec status should contain "Phase"
|
|
And the plan spec status should contain "Processing State"
|
|
And the plan spec status should contain "Projects"
|
|
And the plan spec status should contain "Arguments"
|
|
And the plan spec status should contain "Automation Profile"
|
|
And the plan spec status should contain "Created"
|
|
And the plan spec status should contain "Updated"
|
|
|
|
# ---- plan cancel: --reason ----
|
|
Scenario: Plan cancel with --reason
|
|
Given a plan spec alignment plan exists for cancel
|
|
When I run plan cancel with reason "Requirements changed"
|
|
Then the plan spec cancel should succeed
|
|
And the plan spec cancel output should contain "Requirements changed"
|