From 700d1373c92b60d954f7d29c2fdef722d177f9d3 Mon Sep 17 00:00:00 2001 From: HAL9000 Date: Wed, 29 Apr 2026 22:16:25 +0000 Subject: [PATCH] =?UTF-8?q?fix(cli):=20fix=20stdout=20capture=20for=20BDD?= =?UTF-8?q?=20tests=20=E2=80=94=20write=20Rich=20Console=20to=20sys.stdout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rich's Console() defaults to stderr, but CliRunner().invoke() captures only stdout in result.output. All BDD assertions check result.output, so rich panel output was invisible to tests. Fixed: use Console(file=sys.stdout) so Typer output is captured by the test runner and assertions on Config:, Created:, Capability, and footer message all pass. --- src/cleveragents/cli/commands/validation.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cleveragents/cli/commands/validation.py b/src/cleveragents/cli/commands/validation.py index e641967d2..fa6c73c09 100644 --- a/src/cleveragents/cli/commands/validation.py +++ b/src/cleveragents/cli/commands/validation.py @@ -48,6 +48,7 @@ Based on implementation_plan.md -- Task C1.tool.cli. from __future__ import annotations +import sys from datetime import datetime from pathlib import Path from typing import Annotated, Any @@ -69,7 +70,9 @@ from cleveragents.domain.models.core.tool import Validation, ValidationMode # Create sub-app for validation commands app = typer.Typer(help="Manage validations (pass/fail tools) and resource attachments.") -console = Console() +# Use stdout so Typer/CliRunner captures output in result.output (BDD tests +# assert on result.output; Rich defaults to stderr which would break those). +console = Console(file=sys.stdout) # Reusable --format option description _FORMAT_HELP = "Output format: json, yaml, plain, table, or rich (default: rich)"