From 5024bd884c08ff8d9e5a5422ce077f9afd874308 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Wed, 14 Dec 2022 22:31:25 +0100 Subject: [PATCH] Remove debug line for pretty-printing test, and add '--debug' flag to 'check instead. --- crates/cli/src/cmd/check.rs | 9 ++++++++- crates/lang/src/lib.rs | 2 +- crates/project/src/error.rs | 4 +++- crates/project/src/lib.rs | 21 ++++++++++++++++----- crates/project/src/options.rs | 5 ++++- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/crates/cli/src/cmd/check.rs b/crates/cli/src/cmd/check.rs index 2ec59807..15c7b8f7 100644 --- a/crates/cli/src/cmd/check.rs +++ b/crates/cli/src/cmd/check.rs @@ -11,6 +11,10 @@ pub struct Args { #[clap(short, long)] skip_tests: bool, + /// When enabled, also pretty-print test UPLC on failure + #[clap(long)] + debug: bool, + /// Only run tests if their path + name match the given string #[clap(short, long)] match_tests: Option, @@ -20,8 +24,11 @@ pub fn exec( Args { directory, skip_tests, + debug, match_tests, }: Args, ) -> miette::Result<()> { - crate::with_project(directory, |p| p.check(skip_tests, match_tests.clone())) + crate::with_project(directory, |p| { + p.check(skip_tests, match_tests.clone(), debug) + }) } diff --git a/crates/lang/src/lib.rs b/crates/lang/src/lib.rs index 90c0288b..b2be2f0e 100644 --- a/crates/lang/src/lib.rs +++ b/crates/lang/src/lib.rs @@ -5,6 +5,7 @@ use std::sync::{ pub mod air; pub mod ast; +pub mod builder; pub mod builtins; pub mod expr; pub mod format; @@ -12,7 +13,6 @@ pub mod parser; pub mod pretty; pub mod tipo; pub mod uplc; -pub mod builder; #[derive(Debug, Default, Clone)] pub struct IdGenerator { diff --git a/crates/project/src/error.rs b/crates/project/src/error.rs index 34c1c100..49924876 100644 --- a/crates/project/src/error.rs +++ b/crates/project/src/error.rs @@ -79,10 +79,12 @@ pub enum Error { named: NamedSource, }, - #[error("{} failed", name)] + #[error("{name} failed{}", if *verbose { format!("\n{src}") } else { String::new() } )] TestFailure { name: String, path: PathBuf, + verbose: bool, + src: String, evaluation_hint: Option, }, } diff --git a/crates/project/src/lib.rs b/crates/project/src/lib.rs index df4a7378..67633213 100644 --- a/crates/project/src/lib.rs +++ b/crates/project/src/lib.rs @@ -105,12 +105,20 @@ where self.compile(options) } - pub fn check(&mut self, skip_tests: bool, match_tests: Option) -> Result<(), Error> { + pub fn check( + &mut self, + skip_tests: bool, + match_tests: Option, + verbose: bool, + ) -> Result<(), Error> { let options = Options { code_gen_mode: if skip_tests { CodeGenMode::NoOp } else { - CodeGenMode::Test(match_tests) + CodeGenMode::Test { + match_tests, + verbose, + } }, }; @@ -148,7 +156,10 @@ where self.write_build_outputs(programs, uplc_dump)?; Ok(()) } - CodeGenMode::Test(match_tests) => { + CodeGenMode::Test { + match_tests, + verbose, + } => { let tests = self .collect_scripts(&checked_modules, |def| matches!(def, Definition::Test(..)))?; if !tests.is_empty() { @@ -165,6 +176,8 @@ where name: e.script.name.clone(), path: e.script.input_path.clone(), evaluation_hint: e.script.evaluation_hint.clone(), + src: e.script.program.to_pretty(), + verbose, }) } }) @@ -627,8 +640,6 @@ where continue; } - println!("{}", script.program.to_pretty()); - match script.program.eval(initial_budget) { (Ok(result), remaining_budget, _) => { let eval_info = EvalInfo { diff --git a/crates/project/src/options.rs b/crates/project/src/options.rs index f2fab614..dd09960d 100644 --- a/crates/project/src/options.rs +++ b/crates/project/src/options.rs @@ -3,7 +3,10 @@ pub struct Options { } pub enum CodeGenMode { - Test(Option), + Test { + match_tests: Option, + verbose: bool, + }, Build(bool), NoOp, }