From 801ab3989e21d69842bfde218830e712e72372cd Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 8 Dec 2022 18:20:20 +0100 Subject: [PATCH] feat: display test runner summary alongside test results. Moar sexy. --- crates/project/src/lib.rs | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/crates/project/src/lib.rs b/crates/project/src/lib.rs index 45c868ba..cbbdb857 100644 --- a/crates/project/src/lib.rs +++ b/crates/project/src/lib.rs @@ -528,12 +528,11 @@ impl Project { let max_mem = max_mem.to_string().len() as i32; let max_cpu = max_cpu.to_string().len() as i32; - let fmt_tests = |is_passing: bool, test: Script, spent_budget: ExBudget| -> String { + let fmt_tests = |is_passing: &bool, test: &Script, spent_budget: &ExBudget| -> String { let ExBudget { mem, cpu } = spent_budget; - format!( " [{}] [mem: {}, cpu: {}] {}::{}", - if is_passing { + if *is_passing { "PASS".bold().green().to_string() } else { "FAIL".bold().red().to_string() @@ -545,9 +544,31 @@ impl Project { ) }; - for (is_passing, test, spent_budget) in results { + for (is_passing, test, spent_budget) in &results { println!("{}", fmt_tests(is_passing, test, spent_budget)) } + + let (n_passed, n_failed) = + results + .iter() + .fold((0, 0), |(n_passed, n_failed), (is_passing, _, _)| { + if *is_passing { + (n_passed + 1, n_failed) + } else { + (n_passed, n_failed + 1) + } + }); + + println!( + "{}", + format!( + "\n Summary: {} test(s), {}; {}.", + results.len(), + format!("{} passed", n_passed).bright_green(), + format!("{} failed", n_failed).bright_red() + ) + .bold() + ) } fn write_build_outputs(&self, programs: Vec