diff --git a/lib/crates/fabro-cli/src/commands/runs/list.rs b/lib/crates/fabro-cli/src/commands/runs/list.rs index 006f0f29e..73cd4844b 100644 --- a/lib/crates/fabro-cli/src/commands/runs/list.rs +++ b/lib/crates/fabro-cli/src/commands/runs/list.rs @@ -18,6 +18,7 @@ use crate::user_config::load_user_settings_with_globals; use super::short_run_id; +#[allow(clippy::print_stdout)] pub(crate) async fn list_command( args: &RunsListArgs, styles: &Styles, @@ -123,7 +124,6 @@ pub(crate) async fn list_command( .color_choice(color_choice) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] println!("{}", table.display()?); eprintln!("\n{} run(s) listed.", display_runs.len()); diff --git a/lib/crates/fabro-cli/src/commands/system/df.rs b/lib/crates/fabro-cli/src/commands/system/df.rs index 202250d2d..a11b0f9ba 100644 --- a/lib/crates/fabro-cli/src/commands/system/df.rs +++ b/lib/crates/fabro-cli/src/commands/system/df.rs @@ -30,6 +30,7 @@ pub(super) async fn df_command(args: &DfArgs, globals: &GlobalArgs) -> Result<() .await } +#[allow(clippy::print_stdout)] async fn df_from( args: &DfArgs, store: &dyn fabro_store::Store, @@ -170,7 +171,6 @@ async fn df_from( .color_choice(color_choice) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] println!("{}", summary_table.display()?); println!(); @@ -225,7 +225,6 @@ async fn df_from( .color_choice(color_choice) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] println!("{}", verbose_table.display()?); println!(); println!("* = reclaimable"); diff --git a/lib/crates/fabro-cli/tests/it/cmd/run.rs b/lib/crates/fabro-cli/tests/it/cmd/run.rs index 6b334d78b..9980f30b9 100644 --- a/lib/crates/fabro-cli/tests/it/cmd/run.rs +++ b/lib/crates/fabro-cli/tests/it/cmd/run.rs @@ -344,8 +344,8 @@ fn dry_run_simple() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] === Output === [Simulated] Response for stage: report @@ -379,8 +379,8 @@ fn dry_run_branching() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] === Output === [Simulated] Response for stage: validate @@ -411,8 +411,8 @@ fn dry_run_conditions() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] === Output === [Simulated] Response for stage: path_b @@ -444,8 +444,8 @@ fn dry_run_parallel() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] === Output === [Simulated] Response for stage: review @@ -477,8 +477,8 @@ fn dry_run_styled() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] === Output === [Simulated] Response for stage: critical_review @@ -508,8 +508,8 @@ fn dry_run_legacy_tool() { === Run Result === Run: [ULID] Status: SUCCESS - Duration: 0 seconds - Run: [STORAGE_DIR]/runs/20260330-dry-run-[ULID] + Duration: [DURATION] + Run: [DRY_RUN_DIR] "); } diff --git a/lib/crates/fabro-llm/src/cli.rs b/lib/crates/fabro-llm/src/cli.rs index 3d75206ff..ecad98ef9 100644 --- a/lib/crates/fabro-llm/src/cli.rs +++ b/lib/crates/fabro-llm/src/cli.rs @@ -178,10 +178,7 @@ fn print_models_table(models: &[Model], s: &Styles) { .color_choice(color_choice(use_color)) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] - { - println!("{}", table.display().unwrap()); - } + println!("{}", table.display().unwrap()); } fn read_stdin_prompt() -> Option { @@ -1000,7 +997,6 @@ async fn test_models_via_server( .color_choice(color_choice(use_color)) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] println!("{}", table.display()?); if failures > 0 { @@ -1172,7 +1168,6 @@ async fn test_models( .color_choice(color_choice(use_color)) .border(Border::builder().build()) .separator(Separator::builder().build()); - #[allow(clippy::print_stdout)] println!("{}", table.display()?); if failures > 0 { diff --git a/lib/crates/fabro-test/src/lib.rs b/lib/crates/fabro-test/src/lib.rs index 7f1f5e57c..4f403a204 100644 --- a/lib/crates/fabro-test/src/lib.rs +++ b/lib/crates/fabro-test/src/lib.rs @@ -10,6 +10,15 @@ static INSTA_FILTERS: &[(&str, &str)] = &[ (r"\([0-9a-f]{7} \d{4}-\d{2}-\d{2}\)", "([BUILD])"), (r"\b[0-9A-HJKMNP-TV-Z]{26}\b", "[ULID]"), (r"in \d+(\.\d+)?(ms|s)", "in [TIME]"), + ( + r"\[STORAGE_DIR\]/runs/\d{8}-dry-run-\[ULID\]", + "[DRY_RUN_DIR]", + ), + ( + r"Duration:\s+\d+\s+(seconds?|minutes?|hours?)", + "Duration: [DURATION]", + ), + (r"Base: [^\n]+ \([0-9a-f]{7,40}\)", "Base: [BASE]"), (r"\\([\w\d])", "/$1"), ]; @@ -70,11 +79,12 @@ impl TestContext { /// Returns the combined static + context-specific filters. pub fn filters(&self) -> Vec<(String, String)> { - let mut filters: Vec<(String, String)> = INSTA_FILTERS - .iter() - .map(|(pat, rep)| ((*pat).to_string(), (*rep).to_string())) - .collect(); - filters.extend(self.filters.clone()); + let mut filters = self.filters.clone(); + filters.extend( + INSTA_FILTERS + .iter() + .map(|(pat, rep)| ((*pat).to_string(), (*rep).to_string())), + ); filters }