d98666651f
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 27s
CI / security (pull_request) Successful in 22s
CI / quality (pull_request) Successful in 15s
CI / integration_tests (pull_request) Successful in 4m24s
CI / build (pull_request) Successful in 16s
CI / unit_tests (pull_request) Successful in 9m27s
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 / coverage (push) Blocked by required conditions
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
CI / coverage (pull_request) Successful in 6m55s
CI / docker (pull_request) Successful in 39s
- Enforce config-only 'action create --config <file>' (remove legacy inline flags: --name, --strategy-actor, --execution-actor, --definition-of-done, --arg) - Load config via ActionConfigSchema.from_yaml_file() then Action.from_config() with clear validation error surfacing - Remove 'action available' subcommand (no draft state; actions are available by default) - Add REGEX positional arg to 'action list' for name filtering - Add Short Name and Definition of Done summary to all CLI outputs - Add 'action list --namespace/-n' and '--state/-s' filters - Update existing tests to match new config-only create flow - Add features/action_cli_spec_alignment.feature (19 scenarios) - Add robot/action_cli_spec.robot smoke tests - Add benchmarks/action_cli_bench.py ASV benchmarks - Add docs/reference/action_cli.md
83 lines
3.8 KiB
Gherkin
83 lines
3.8 KiB
Gherkin
Feature: Action CLI edge cases coverage
|
|
As a developer
|
|
I want to test edge cases and fallback paths in the action CLI
|
|
So that all branches are thoroughly exercised
|
|
|
|
Background:
|
|
Given an action edge case CLI runner
|
|
And an action edge case mocked lifecycle service
|
|
|
|
# _print_action edge cases
|
|
Scenario: Print action with no arguments shows none indicator
|
|
Given an action edge case action with no arguments
|
|
When I call action edge case print action
|
|
Then the action edge case output should contain "(none)"
|
|
|
|
Scenario: Print action with arguments shows formatted list
|
|
Given an action edge case action with multiple arguments
|
|
When I call action edge case print action
|
|
Then the action edge case output should contain argument "target_coverage"
|
|
And the action edge case output should contain argument "test_framework"
|
|
And the action edge case output should contain "Target coverage percentage"
|
|
|
|
Scenario: Print action with minimal description shows description line
|
|
Given an action edge case action without short description
|
|
When I call action edge case print action
|
|
Then the action edge case output should contain "Minimal"
|
|
|
|
# Create command edge cases (config-only)
|
|
Scenario: Create action from config with multiple arguments
|
|
Given an action edge case config with multiple args
|
|
When I run action edge case create with config
|
|
Then the action edge case create should succeed
|
|
And the action edge case service should receive 2 arguments
|
|
|
|
Scenario: Create action from config with read-only flag
|
|
Given an action edge case config with read-only
|
|
When I run action edge case create with config
|
|
Then the action edge case create should succeed
|
|
And the action edge case service should receive read_only true
|
|
|
|
Scenario: Create action from config with long_description
|
|
Given an action edge case config with long description
|
|
When I run action edge case create with config
|
|
Then the action edge case create should succeed
|
|
And the action edge case service should receive long description "Detailed documentation text"
|
|
|
|
# List command with state filters
|
|
Scenario: List actions with state filter available
|
|
Given there are action edge case existing actions
|
|
When I run action edge case list with state "available"
|
|
Then the action edge case list should succeed
|
|
And the action edge case service list should be called with available state
|
|
|
|
Scenario: List actions with state filter archived
|
|
Given there are action edge case existing actions
|
|
When I run action edge case list with state "archived"
|
|
Then the action edge case list should succeed
|
|
And the action edge case service list should be called with archived state
|
|
|
|
# Show command edge cases
|
|
Scenario: Show action succeeds with name lookup
|
|
Given an action edge case that is findable by name
|
|
When I run action edge case show with name "local/name-only-action"
|
|
Then the action edge case show should succeed
|
|
And the action edge case service should have used get_action_by_name
|
|
|
|
Scenario: Show action raises abort when name lookup fails
|
|
Given an action edge case where name lookup fails
|
|
When I run action edge case show with name "nonexistent"
|
|
Then the action edge case show should abort with not found
|
|
|
|
# Archive command edge cases
|
|
Scenario: Archive command succeeds with name lookup
|
|
Given an action edge case action findable by name for archive
|
|
When I run action edge case archive with name "local/name-only-available"
|
|
Then the action edge case archive should succeed
|
|
And the action edge case service should have used get_action_by_name
|
|
|
|
Scenario: Archive command not found aborts
|
|
Given an action edge case where name lookup fails for archive
|
|
When I run action edge case archive with name "nonexistent"
|
|
Then the action edge case archive should abort with not found
|