Files
cleveragents-core/features/tool_cli.feature
T
freemo 1d36449a98
CI / build (push) Has been cancelled
CI / e2e_tests (push) Has been cancelled
CI / typecheck (push) Has been cancelled
CI / integration_tests (push) Has been cancelled
CI / quality (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
CI / security (push) Has been cancelled
CI / helm (push) Has been cancelled
CI / unit_tests (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled
fix(cli): remove extra --mode flag from validation attach
Remove the --mode/-m CLI flag from the validation attach command to align
with the specification, which defines validation mode as an inherent
property of the validation definition set at registration time via
validation add, not as a per-attachment override.

The service layer (ToolRegistryService.attach_validation) no longer
accepts mode as a parameter; instead it reads the mode from the
validation's registered definition. The ToolRegistryRepository
_to_legacy_domain now exposes the mode field so the service can access it.

All tests that passed --mode to the CLI or service have been updated or
removed. The invalid-mode validation scenarios were removed since the
mode is no longer caller-supplied. Coverage remains at 98.7%.

ISSUES CLOSED: #913

Co-authored-by: Jeffrey Phillips Freeman <jeffrey.freeman@cleverthis.com>
Co-committed-by: Jeffrey Phillips Freeman <jeffrey.freeman@cleverthis.com>
2026-04-02 17:07:26 +00:00

307 lines
13 KiB
Gherkin

Feature: Tool and Validation CLI commands
As a developer
I want to manage tools and validations via CLI commands
So that I can register, list, show, and remove tools and validations
Background:
Given a tool CLI runner with mocks
And a mocked tool registry service
# Tool add command tests
Scenario: Add tool via config file
Given a valid tool config YAML file
When I run tool CLI add with --config pointing to the YAML file
Then the tool CLI add should succeed
And the tool CLI output should contain "Tool Registered"
Scenario: Add tool with --update flag when tool exists
Given a valid tool config YAML file
And the tool already exists in the registry
When I run tool CLI add with --config and --update
Then the tool CLI add should succeed
And the tool CLI output should contain "Tool Updated"
Scenario: Add tool with --update flag when tool does not exist
Given a valid tool config YAML file
And the tool does not exist in the registry
When I run tool CLI add with --config and --update
Then the tool CLI add should succeed
And the tool CLI output should contain "Tool Registered"
Scenario: Add tool with missing config file fails
When I run tool CLI add with --config pointing to a missing file
Then the tool CLI command should abort
Scenario: Add tool with invalid YAML fails
Given an invalid YAML tool config file
When I run tool CLI add with --config pointing to the invalid YAML file
Then the tool CLI command should abort
Scenario: Add tool with duplicate name fails
Given a valid tool config YAML file
And the tool registry raises a duplicate error on register
When I run tool CLI add with --config pointing to the YAML file
Then the tool CLI command should abort
Scenario: Add tool with json format output
Given a valid tool config YAML file
When I run tool CLI add with --config and --format json
Then the tool CLI add should succeed
And the tool CLI output should contain "local/test-tool"
# Tool list command tests
Scenario: List all tools
Given there are mocked tools in the registry
When I run tool CLI list
Then the tool CLI list should show all tools
Scenario: List tools with namespace filter
Given there are mocked tools in the registry
When I run tool CLI list with namespace filter "local"
Then the tool CLI list should succeed with results
Scenario: List tools with source filter
Given there are mocked tools in the registry
When I run tool CLI list with source filter "custom"
Then the tool CLI list should succeed with results
Scenario: List tools with type filter
Given there are mocked tools in the registry
When I run tool CLI list with type filter "tool"
Then the tool CLI list should succeed with results
Scenario: List tools with type filter validation
Given there are mocked tools in the registry
When I run tool CLI list with type filter "validation"
Then the tool CLI list should succeed with results
Scenario: List tools with invalid type filter
When I run tool CLI list with invalid type "unknown"
Then the tool CLI command should abort
Scenario: List tools with regex filter
Given there are mocked tools in the registry
When I run tool CLI list with regex filter "line-.*"
Then the tool CLI list should succeed with results
Scenario: List tools with invalid regex
When I run tool CLI list with invalid regex "[invalid"
Then the tool CLI command should abort
Scenario: List tools when empty
Given there are no mocked tools
When I run tool CLI list
Then the tool CLI should show no tools message
Scenario: List tools with json format
Given there are mocked tools in the registry
When I run tool CLI list with format "json"
Then the tool CLI list should succeed with results
Scenario: List tools with yaml format
Given there are mocked tools in the registry
When I run tool CLI list with format "yaml"
Then the tool CLI list should succeed with results
Scenario: List tools with plain format
Given there are mocked tools in the registry
When I run tool CLI list with format "plain"
Then the tool CLI list should succeed with results
Scenario: List tools with table format
Given there are mocked tools in the registry
When I run tool CLI list with format "table"
Then the tool CLI list should succeed with results
# Tool show command tests
Scenario: Show tool by name
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI show with name "local/test-tool"
Then the tool CLI should show the tool details
Scenario: Show tool not found
Given there is no tool with name "local/missing"
When I run tool CLI show with name "local/missing"
Then the tool CLI command should abort
Scenario: Show tool with json format
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI show for name "local/test-tool" using format "json"
Then the tool CLI show should succeed
Scenario: Show tool with yaml format
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI show for name "local/test-tool" using format "yaml"
Then the tool CLI show should succeed
Scenario: Show tool with plain format
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI show for name "local/test-tool" using format "plain"
Then the tool CLI show should succeed
# Tool remove command tests
Scenario: Remove tool by name with confirmation
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI remove with name "local/test-tool" and --yes
Then the tool CLI remove should succeed
And the tool CLI output should contain "Removed tool"
Scenario: Remove tool not found
Given there is no tool with name "local/missing"
When I run tool CLI remove with name "local/missing" and --yes
Then the tool CLI command should abort
Scenario: Remove tool with json format
Given there is a mocked tool with name "local/test-tool"
When I run tool CLI remove confirmed name "local/test-tool" with fmt "json"
Then the tool CLI remove should succeed
Scenario: Remove tool with service error
Given there is a mocked tool with name "local/test-tool"
And the tool registry raises an error on remove
When I run tool CLI remove with name "local/test-tool" and --yes
Then the tool CLI command should abort
# Validation add command tests
Scenario: Add validation via config file
Given a valid validation config YAML file
When I run validation CLI add with --config pointing to the YAML file
Then the validation CLI add should succeed
And the validation CLI output should contain "Validation Registered"
Scenario: Add validation with --update flag when validation exists
Given a valid validation config YAML file
And the validation already exists in the registry
When I run validation CLI add with --config and --update
Then the validation CLI add should succeed
And the validation CLI output should contain "Validation Updated"
Scenario: Add validation with missing config file fails
When I run validation CLI add with --config pointing to a missing file
Then the validation CLI command should abort
Scenario: Add validation with invalid YAML fails
Given an invalid YAML validation config file
When I run validation CLI add with --config pointing to the invalid YAML file
Then the validation CLI command should abort
Scenario: Add validation with json format output
Given a valid validation config YAML file
When I run validation CLI add with --config and --format json
Then the validation CLI add should succeed
# Validation attach command tests
Scenario: Attach validation to resource
Given a mocked validation exists for attaching
When I run validation CLI attach "resource/r1" "local/test-val"
Then the validation CLI attach should succeed
And the validation CLI output should contain "Attached validation"
Scenario: Attach validation with project scope
Given a mocked validation exists for attaching
When I run validation CLI attach scoped "resource/r1" "local/test-val" with project "myproj"
Then the validation CLI attach should succeed
Scenario: Attach validation with extra args
Given a mocked validation exists for attaching
When I run validation CLI attach with extra args "resource/r1" "local/test-val" arg is "threshold=80"
Then the validation CLI attach should succeed
Scenario: Attach validation with invalid arg format
Given a mocked validation exists for attaching
When I run validation CLI attach with extra args "resource/r1" "local/test-val" arg is "badarg"
Then the validation CLI command should abort
Scenario: Attach validation not found
Given the validation is not found for attaching
When I run validation CLI attach "resource/r1" "local/missing-val"
Then the validation CLI command should abort
Scenario: Attach validation with json format
Given a mocked validation exists for attaching
When I run validation CLI attach formatted "resource/r1" "local/test-val" fmt is "json"
Then the validation CLI attach should succeed
# Validation detach command tests
Scenario: Detach validation with confirmation
Given a mocked attachment exists for detaching
When I run validation CLI detach "att-123" with --yes
Then the validation CLI detach should succeed
And the validation CLI output should contain "Detached validation"
Scenario: Detach validation not found
Given the attachment is not found for detaching
When I run validation CLI detach "att-missing" with --yes
Then the validation CLI command should abort
Scenario: Detach validation with json format
Given a mocked attachment exists for detaching
When I run validation CLI detach formatted "att-123" confirmed fmt "json"
Then the validation CLI detach should succeed
# Tool add with CleverAgentsError
Scenario: Add tool with CleverAgentsError from service
Given a valid tool config YAML file
And the tool registry raises a CleverAgentsError on register
When I run tool CLI add with --config pointing to the YAML file
Then the tool CLI command should abort
# Tool list with CleverAgentsError
Scenario: List tools with CleverAgentsError from service
Given the tool registry raises a CleverAgentsError on list
When I run tool CLI list
Then the tool CLI command should abort
# Tool show with CleverAgentsError
Scenario: Show tool with CleverAgentsError from service
Given the tool registry raises a CleverAgentsError on get
When I run tool CLI show with name "local/test-tool"
Then the tool CLI command should abort
# Validation add with CleverAgentsError
Scenario: Add validation with CleverAgentsError from service
Given a valid validation config YAML file
And the validation registry raises a CleverAgentsError on register
When I run validation CLI add with --config pointing to the YAML file
Then the validation CLI command should abort
# Validation attach with CleverAgentsError
Scenario: Attach validation with CleverAgentsError from service
Given the validation registry raises a CleverAgentsError on attach
When I run validation CLI attach "resource/r1" "local/test-val"
Then the validation CLI command should abort
# Validation detach with CleverAgentsError
Scenario: Detach validation with CleverAgentsError from service
Given the validation registry raises a CleverAgentsError on detach
When I run validation CLI detach "att-123" with --yes
Then the validation CLI command should abort
# Validation add with update and non-existent
Scenario: Add validation with --update flag when validation does not exist
Given a valid validation config YAML file
And the validation does not exist in the registry
When I run validation CLI add with --config and --update
Then the validation CLI add should succeed
And the validation CLI output should contain "Validation Registered"
# Tool remove with remove returning false
Scenario: Remove tool with remove returning false
Given there is a mocked tool with name "local/fail-remove"
And the tool registry returns false on remove
When I run tool CLI remove with name "local/fail-remove" and --yes
Then the tool CLI command should abort
# Validation add with validation error
Scenario: Add validation with validation error from service
Given a valid validation config YAML file
And the validation registry raises a validation error on register
When I run validation CLI add with --config pointing to the YAML file
Then the validation CLI command should abort
# Validation attach with validation error
Scenario: Attach validation with validation error from service
Given the validation registry raises a validation error on attach
When I run validation CLI attach "resource/r1" "local/test-val"
Then the validation CLI command should abort