Add mock-based @given steps and 14 new scenarios covering the rich
table list, show, enable, disable, remove happy paths, the abort
confirmation flow, and the description truncation branch
(plugin.py:134). The @when step now patches _get_plugin_manager via
context so PluginManager isolation works without a singleton.
ISSUES CLOSED: #5756
- Register plugin command in CLI main.py imports and add_typer calls
- Add plugin to valid_cmds list in main() to prevent "Invalid command" error
- Remove unused PluginNotFoundError import from plugin.py (F401 lint fix)
- Fix line too long in plugin.py _print_plugin function (E501 lint fix)
- Fix list_plugins to output JSON even when no plugins installed
- Remove duplicate step definitions from plugin_cli_steps.py that conflicted
with existing steps (I run, output should contain, output should be valid JSON)
- Rewrite plugin_cli.feature to test error cases that don't require pre-registered
plugins (since PluginManager is not a singleton across CLI invocations)
- Implement plugin CLI subcommand group with list, show, enable, disable, install, remove commands
- Add JSON/YAML output format support for all plugin commands
- Create Behave BDD tests for plugin CLI functionality
- Full type annotations and pyright compliance
- Supports plugin state management (ACTIVATED, DEACTIVATED, DISCOVERED, ERRORED)
Closes#5756
The stale `src/cleveragents/cli/output.py` file (391 lines) was added by
this PR alongside the existing `output/` package. Python silently uses the
package, leaving output.py permanently unreachable and at 0% coverage,
which dragged the project total below the 96.5% threshold.
Additionally, the json/yaml/plain format branches in
`_cli_output_manager.py` had no BDD test coverage. The existing table
scenarios also set the output format after calling display_table(), so
the non-rich branches were never exercised.
Fixes:
- Delete src/cleveragents/cli/output.py (unreachable stale module)
- Add 18 BDD scenarios covering json/yaml/plain format branches for all
display functions: success, warning, info, error panel, success panel,
table, handle_exception
- Add step defs for CLIOutputManager instance method calls
- Fix scenario ordering: output format set before display calls
ISSUES CLOSED: #10655
Resolves ImportError in cli_error_handling_steps.py by implementing the CLIOutputManager class and display_* helper functions that were referenced in BDD tests but missing from the output package.
Also fixes duplicate step definitions that conflicted with existing cli_output_formats_steps.py by renaming the ambiguous steps.
- Create centralized CLIOutputManager class for consistent error handling
- Implement unified error display with debug flag support
- Add display helpers for success, warning, info, panels, and tables
- Support all output formats (rich, color, table, plain, json, yaml)
- Stack traces only shown when --debug flag is enabled
- Add comprehensive BDD tests for error handling scenarios
- Ensure consistent styling and iconography across all CLI commands