agentstatedeveloper_cli/commands/
test_summary.rs1use std::io::Read;
8
9use anyhow::Result;
10use clap::Args;
11use serde_json::json;
12
13use agentstatedeveloper_core::test_summary::summarize;
14
15use crate::config::Config;
16
17#[derive(Debug, Args)]
18pub struct TestSummaryArgs {
19 #[arg(long)]
21 pub agent: bool,
22}
23
24pub fn run(_cfg: &Config, args: TestSummaryArgs) -> Result<()> {
25 let mut input = String::new();
26 std::io::stdin().read_to_string(&mut input)?;
27 let s = summarize(&input);
28
29 if args.agent {
30 let out = json!({
31 "runner": s.runner,
32 "passed": s.passed,
33 "failed": s.failed,
34 "failures": s.failures.iter().map(|f| json!({
35 "name": f.name,
36 "detail": f.detail,
37 })).collect::<Vec<_>>(),
38 });
39 println!("{}", serde_json::to_string_pretty(&out)?);
40 return Ok(());
41 }
42
43 if s.failed == 0 {
44 println!("✓ {} passed, 0 failed ({})", s.passed, s.runner);
45 return Ok(());
46 }
47 println!("✗ {} failed, {} passed ({})", s.failed, s.passed, s.runner);
48 for f in &s.failures {
49 println!(" {}", f.name);
50 for d in &f.detail {
51 println!(" {}", d);
52 }
53 }
54 Ok(())
55}