Files
cleveragents-core/robot/cli_core.robot
T
freemo 4d31f0ed02
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 51s
CI / security (pull_request) Successful in 1m0s
CI / build (pull_request) Successful in 19s
CI / helm (pull_request) Successful in 24s
CI / unit_tests (pull_request) Failing after 7m5s
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 16m51s
CI / integration_tests (pull_request) Successful in 23m16s
CI / coverage (pull_request) Successful in 10m39s
CI / status-check (pull_request) Failing after 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 56m46s
fix(cli): promote --format to global CLI callback option per spec
Add `fmt: OutputFormat` parameter to `main_callback()` in
`src/cleveragents/cli/main.py` and store the selected format in
`ctx.obj["format"]` so all subcommands can read it without needing
their own per-command `--format` flag.

Remove per-command `--format` / `fmt` parameters from `version()`,
`info()`, and `diagnostics()` commands. These commands now read the
format from `ctx.obj.get("format", OutputFormat.RICH.value)`.

The specification states: "The framework supports six distinct output
formats, selectable via the global `--format` flag." This change
aligns the implementation with the spec by making `--format` a global
option on the root `agents` command (via the Typer callback).

All six formats (json, yaml, plain, rich, table, color) are supported
via the global flag and the `-f` shorthand.

Add Behave BDD scenarios covering global `--format` flag propagation
to subcommands for all six formats. Update Robot Framework integration
tests to exercise the global `--format` flag. Update existing tests
that used per-command `--format` for version/info/diagnostics to use
the global flag instead.

ISSUES CLOSED: #2908
2026-04-05 08:39:14 +00:00

123 lines
6.4 KiB
Plaintext

*** Settings ***
Documentation Integration tests for enhanced version, info, diagnostics commands
Resource ${CURDIR}/common.resource
Library Process
Library OperatingSystem
Library String
Library Collections
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${PYTHON} python
*** Keywords ***
Run CLI With Clean Home
[Documentation] Run a CLI command with a temp HOME to avoid stale config
[Arguments] @{cmd}
${tmpdir}= Evaluate __import__('tempfile').mkdtemp(prefix='cli_core_')
${result}= Run Process @{cmd} timeout=120s on_timeout=kill env:HOME=${tmpdir}
RETURN ${result}
*** Test Cases ***
Version Command Default Rich Format
[Documentation] Version command with default (rich) format shows version string
${result}= Run Process ${PYTHON} -m cleveragents version timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} 1.0.0
Should Contain ${result.stdout} CleverAgents
Version Command JSON Format
[Documentation] Version command with global --format json returns valid JSON
${result}= Run Process ${PYTHON} -m cleveragents --format json version timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} "version": "1.0.0"
Should Contain ${result.stdout} "schema": "v3"
Should Contain ${result.stdout} "channel": "stable"
Should Contain ${result.stdout} "python"
Should Contain ${result.stdout} "dependencies"
Should Contain ${result.stdout} "build_date"
Should Contain ${result.stdout} "commit"
Version Command Plain Format
[Documentation] Version command with global --format plain returns key-value pairs
${result}= Run Process ${PYTHON} -m cleveragents --format plain version timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} version: 1.0.0
Should Contain ${result.stdout} schema: v3
Version Command YAML Format
[Documentation] Version command with global --format yaml returns YAML
${result}= Run Process ${PYTHON} -m cleveragents --format yaml version timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} version: 1.0.0
Should Contain ${result.stdout} schema: v3
Info Command Default Rich Format
[Documentation] Info command with default (rich) format shows environment details
${result}= Run Process ${PYTHON} -m cleveragents info timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} Environment
Should Contain ${result.stdout} Runtime
Info Command JSON Format
[Documentation] Info command with global --format json returns structured data
${result}= Run CLI With Clean Home ${PYTHON} -m cleveragents --format json info
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} "version": "1.0.0"
Should Contain ${result.stdout} "data_dir"
Should Contain ${result.stdout} "database"
Should Contain ${result.stdout} "server_mode"
Info Command Plain Format
[Documentation] Info command with global --format plain returns key-value pairs
${result}= Run CLI With Clean Home ${PYTHON} -m cleveragents --format plain info
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} version: 1.0.0
Should Contain ${result.stdout} server_mode:
Diagnostics Command Default Rich Format
[Documentation] Diagnostics command with default (rich) format runs checks
${result}= Run Process ${PYTHON} -m cleveragents diagnostics timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} Checks
Should Contain ${result.stdout} Summary
Diagnostics Command JSON Format
[Documentation] Diagnostics command with global --format json returns structured data
${result}= Run Process ${PYTHON} -m cleveragents --format json diagnostics timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} "checks"
Should Contain ${result.stdout} "summary"
Should Contain ${result.stdout} "recommendations"
Should Contain ${result.stdout} "total"
Should Contain ${result.stdout} "warnings"
Should Contain ${result.stdout} "errors"
Diagnostics Command Plain Format
[Documentation] Diagnostics command with global --format plain returns key-value pairs
${result}= Run Process ${PYTHON} -m cleveragents --format plain diagnostics timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} checks:
Should Contain ${result.stdout} summary:
Diagnostics Command Check Flag Returns Valid Exit Code
[Documentation] Diagnostics --check exits 0 when no critical errors are found.
... Disk-space errors are tolerated since CI runners may have low disk.
${result}= Run Process ${PYTHON} -m cleveragents --format json diagnostics --check timeout=120s on_timeout=kill
Should Contain ${result.stdout} "checks"
Should Contain ${result.stdout} "has_errors"
# Accept exit code 0 (clean) or 1 if the only error is disk space (CI environment)
IF ${result.rc} != 0
Should Contain ${result.stdout} Disk space Diagnostics --check failed with non-disk error: ${result.stdout}
END
Diagnostics Command Performance
[Documentation] Diagnostics command completes within acceptable time
${start}= Get Time epoch
${result}= Run Process ${PYTHON} -m cleveragents --format json diagnostics timeout=120s on_timeout=kill
${end}= Get Time epoch
${duration}= Evaluate ${end} - ${start}
Should Be True ${duration} < 90 Diagnostics took too long: ${duration}s
Should Be Equal As Integers ${result.rc} 0