diff --git a/cli/src/main.rs b/cli/src/main.rs index aaf45cb1..0bf4f01a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -121,7 +121,9 @@ fn run() -> error::Result<()> { let filter = matches.value_of("filter"); let corpus_path = current_dir.join("corpus"); if let Some(language) = loader.language_at_path(¤t_dir)? { - test::run_tests_at_path(language, &corpus_path, debug, debug_graph, filter)?; + if !test::run_tests_at_path(language, &corpus_path, debug, debug_graph, filter)? { + exit(1); + } } else { eprintln!("No language found"); } diff --git a/cli/src/test.rs b/cli/src/test.rs index b8b78b8f..d6a2a7ce 100644 --- a/cli/src/test.rs +++ b/cli/src/test.rs @@ -48,7 +48,7 @@ pub fn run_tests_at_path( debug: bool, debug_graph: bool, filter: Option<&str>, -) -> Result<()> { +) -> Result { let test_entry = parse_tests(path)?; let mut _log_session = None; let mut parser = Parser::new(); @@ -86,9 +86,10 @@ pub fn run_tests_at_path( println!("\n {}. {}:", i + 1, name); print_diff(actual, expected); } + Ok(true) + } else { + Ok(false) } - - Ok(()) } pub fn print_diff_key() {