From a7f4ecef9d7aff66859c7b35a7785bf7ef1a6810 Mon Sep 17 00:00:00 2001 From: KtorZ <5680256+KtorZ@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:58:57 +0100 Subject: [PATCH] more aesthetic changes. In particular, using a concrete enum instead of a string to avoid an unnecessary incomplete pattern-match, and remove superfluous comments. Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com> --- crates/aiken-project/src/lib.rs | 37 ++++++++++++------- crates/aiken-project/src/telemetry.rs | 2 +- crates/aiken-project/src/telemetry/json.rs | 4 +- .../aiken-project/src/telemetry/terminal.rs | 6 +-- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index a1c14719..0f8e7c6c 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -83,6 +83,12 @@ enum AddModuleBy { Path(PathBuf), } +#[derive(Debug, Clone, Copy)] +enum Runnable { + Test, + Bench, +} + pub struct Project where T: EventListener, @@ -471,28 +477,30 @@ where seed, times_to_run, } => { + let verbose = false; + let tests = - self.collect_benchmarks(false, match_tests, exact_match, options.tracing)?; + self.collect_benchmarks(verbose, match_tests, exact_match, options.tracing)?; if !tests.is_empty() { self.event_listener.handle_event(Event::RunningBenchmarks); } - let tests = self.run_benchmarks(tests, seed, times_to_run); + let benchmarks = self.run_benchmarks(tests, seed, times_to_run); - let errors: Vec = tests + let errors: Vec = benchmarks .iter() .filter_map(|e| { if e.is_success() { None } else { - Some(Error::from_test_result(e, false)) + Some(Error::from_test_result(e, verbose)) } }) .collect(); self.event_listener - .handle_event(Event::FinishedBenchmarks { seed, tests }); + .handle_event(Event::FinishedBenchmarks { seed, benchmarks }); if !errors.is_empty() { Err(errors) @@ -954,7 +962,7 @@ where fn collect_test_items( &mut self, - kind: &str, // "test" or "bench" + kind: Runnable, verbose: bool, match_tests: Option>, exact_match: bool, @@ -993,8 +1001,8 @@ where for def in checked_module.ast.definitions() { let func = match (kind, def) { - ("test", Definition::Test(func)) => Some(func), - ("bench", Definition::Benchmark(func)) => Some(func), + (Runnable::Test, Definition::Test(func)) => Some(func), + (Runnable::Bench, Definition::Benchmark(func)) => Some(func), _ => None, }; @@ -1049,19 +1057,18 @@ where } tests.push(match kind { - "test" => Test::from_function_definition( + Runnable::Test => Test::from_function_definition( &mut generator, test.to_owned(), module_name, input_path, ), - "bench" => Test::from_benchmark_definition( + Runnable::Bench => Test::from_benchmark_definition( &mut generator, test.to_owned(), module_name, input_path, ), - _ => unreachable!("Invalid test kind"), }); } @@ -1075,7 +1082,7 @@ where exact_match: bool, tracing: Tracing, ) -> Result, Error> { - self.collect_test_items("test", verbose, match_tests, exact_match, tracing) + self.collect_test_items(Runnable::Test, verbose, match_tests, exact_match, tracing) } fn collect_benchmarks( @@ -1085,7 +1092,7 @@ where exact_match: bool, tracing: Tracing, ) -> Result, Error> { - self.collect_test_items("bench", verbose, match_tests, exact_match, tracing) + self.collect_test_items(Runnable::Bench, verbose, match_tests, exact_match, tracing) } fn run_tests( @@ -1107,7 +1114,9 @@ where Test::PropertyTest(property_test) => { property_test.run(seed, property_max_success, plutus_version) } - Test::Benchmark(_) => unreachable!("Benchmarks cannot be run in PBT."), + Test::Benchmark(_) => { + unreachable!("found unexpected benchmark amongst collected tests.") + } }) .collect::), PlutusData>>>() .into_iter() diff --git a/crates/aiken-project/src/telemetry.rs b/crates/aiken-project/src/telemetry.rs index 94491c43..0e3e7d19 100644 --- a/crates/aiken-project/src/telemetry.rs +++ b/crates/aiken-project/src/telemetry.rs @@ -50,7 +50,7 @@ pub enum Event { }, FinishedBenchmarks { seed: u32, - tests: Vec>, + benchmarks: Vec>, }, WaitingForBuildDirLock, ResolvingPackages { diff --git a/crates/aiken-project/src/telemetry/json.rs b/crates/aiken-project/src/telemetry/json.rs index b72e7b87..ee76b0f5 100644 --- a/crates/aiken-project/src/telemetry/json.rs +++ b/crates/aiken-project/src/telemetry/json.rs @@ -39,8 +39,8 @@ impl EventListener for Json { }); println!("{}", serde_json::to_string_pretty(&json_output).unwrap()); } - Event::FinishedBenchmarks { tests, seed } => { - let benchmark_results: Vec<_> = tests + Event::FinishedBenchmarks { benchmarks, seed } => { + let benchmark_results: Vec<_> = benchmarks .into_iter() .filter_map(|test| { if let TestResult::BenchmarkResult(result) = test { diff --git a/crates/aiken-project/src/telemetry/terminal.rs b/crates/aiken-project/src/telemetry/terminal.rs index d0dfd698..16e2578e 100644 --- a/crates/aiken-project/src/telemetry/terminal.rs +++ b/crates/aiken-project/src/telemetry/terminal.rs @@ -224,9 +224,9 @@ impl EventListener for Terminal { "...".if_supports_color(Stderr, |s| s.bold()) ); } - Event::FinishedBenchmarks { tests, .. } => { - for test in tests { - if let TestResult::BenchmarkResult(result) = test { + Event::FinishedBenchmarks { benchmarks, .. } => { + for bench in benchmarks { + if let TestResult::BenchmarkResult(result) = bench { println!("{} {} ", result.bench.name.bold(), "BENCH".blue(),); println!(" Memory: {} bytes", result.cost.mem); println!(" CPU: {} units", result.cost.cpu);