diff --git a/src/dependencies.rs b/src/dependencies.rs index 7afa090c..7a67d3e4 100644 --- a/src/dependencies.rs +++ b/src/dependencies.rs @@ -16,7 +16,7 @@ use crate::{ custom_flags::Flag, per_test_config::TestConfig, test_result::Errored, - CommandBuilder, Config, OutputConflictHandling, + CommandBuilder, Config, OutputConflictHandling, TestOk, }; #[derive(Default, Debug)] @@ -390,13 +390,21 @@ impl Flag for DependencyBuilder { config: &TestConfig<'_>, build_manager: &BuildManager<'_>, ) -> Result<(), Errored> { - config + let status = config .status - .update_status("waiting for dependencies to finish building".into()); - let extra_args = build_manager.build(self.clone())?; - cmd.args(extra_args); - config.status.update_status(String::new()); - Ok(()) + .for_revision("waiting for dependencies to finish building".into()); + match build_manager.build(self.clone()) { + Ok(extra_args) => { + cmd.args(extra_args); + status.done(&Ok(TestOk::Ok)); + Ok(()) + } + Err(err) => { + let err = Err(err); + status.done(&err); + return Err(err.unwrap_err()); + } + } } } diff --git a/src/status_emitter.rs b/src/status_emitter.rs index f3e30d27..75baf620 100644 --- a/src/status_emitter.rs +++ b/src/status_emitter.rs @@ -60,9 +60,6 @@ pub trait TestStatus: Send + Sync + RefUnwindSafe { stdout: &'a [u8], ) -> Box; - /// Change the status of the test while it is running to supply some kind of progress - fn update_status(&self, msg: String); - /// A test has finished, handle the result immediately. fn done(&self, _result: &TestResult) {} @@ -134,8 +131,6 @@ impl TestStatus for SilentStatus { Box::new(()) } - fn update_status(&self, _msg: String) {} - fn path(&self) -> &Path { &self.path } @@ -179,7 +174,6 @@ enum Msg { Inc, IncLength, Finish, - Status(String, String), } impl Text { @@ -212,9 +206,6 @@ impl Text { spinner.finish_and_clear(); } } - Msg::Status(msg, status) => { - threads.get_mut(&msg).unwrap().set_message(status); - } Msg::Push(msg) => { let spinner = bars.add(ProgressBar::new_spinner().with_prefix(msg.clone())); @@ -329,10 +320,6 @@ impl TestStatus for TextTest { } } - fn update_status(&self, msg: String) { - self.text.sender.send(Msg::Status(self.msg(), msg)).unwrap(); - } - fn failed_test<'a>( &self, cmd: &str, @@ -946,8 +933,6 @@ impl TestStatus for PathAndRev { fn revision(&self) -> &str { &self.revision } - - fn update_status(&self, _msg: String) {} } impl StatusEmitter for Gha { @@ -1057,11 +1042,6 @@ impl TestStatus for (T, U) { fn for_path(&self, path: &Path) -> Box { Box::new((self.0.for_path(path), self.1.for_path(path))) } - - fn update_status(&self, msg: String) { - self.0.update_status(msg.clone()); - self.1.update_status(msg) - } } impl StatusEmitter for (T, U) { @@ -1115,10 +1095,6 @@ impl TestStatus for Box { ) -> Box { (**self).failed_test(cmd, stderr, stdout) } - - fn update_status(&self, msg: String) { - (**self).update_status(msg) - } } impl StatusEmitter for Box { diff --git a/src/test_result.rs b/src/test_result.rs index a51606fc..6b68dabc 100644 --- a/src/test_result.rs +++ b/src/test_result.rs @@ -4,6 +4,7 @@ use crate::{status_emitter::TestStatus, Error}; use color_eyre::eyre::Result; /// The possible non-failure results a single test can have. +#[derive(Debug)] pub enum TestOk { /// The test passed Ok, diff --git a/tests/integrations/basic-bin/Cargo.stdout b/tests/integrations/basic-bin/Cargo.stdout index 058d8047..8183a6fd 100644 --- a/tests/integrations/basic-bin/Cargo.stdout +++ b/tests/integrations/basic-bin/Cargo.stdout @@ -4,6 +4,7 @@ running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished Building dependencies ... ok +tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp.rs ... ok test result: ok. 1 passed diff --git a/tests/integrations/basic-fail-mode/Cargo.stdout b/tests/integrations/basic-fail-mode/Cargo.stdout index 15df52b1..1c18a072 100644 --- a/tests/integrations/basic-fail-mode/Cargo.stdout +++ b/tests/integrations/basic-fail-mode/Cargo.stdout @@ -9,6 +9,7 @@ running 3 tests test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished Building dependencies ... ok +tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp.rs ... ok test result: ok. 1 passed diff --git a/tests/integrations/basic-fail/Cargo.stdout b/tests/integrations/basic-fail/Cargo.stdout index a27553fa..86fa1ba4 100644 --- a/tests/integrations/basic-fail/Cargo.stdout +++ b/tests/integrations/basic-fail/Cargo.stdout @@ -4,19 +4,26 @@ running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished Building dependencies ... ok +tests/actual_tests/bad_pattern.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/bad_pattern.rs ... FAILED +tests/actual_tests/executable.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/executable.rs (revision `run`) ... FAILED tests/actual_tests/executable.rs ... ok +tests/actual_tests/executable_compile_err.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/executable_compile_err.rs ... FAILED +tests/actual_tests/exit_code_fail.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/exit_code_fail.rs ... FAILED tests/actual_tests/filters.rs ... FAILED +tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp.rs ... FAILED +tests/actual_tests/foomp2.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp2.rs ... FAILED tests/actual_tests/inline_chain.rs ... FAILED tests/actual_tests/joined_wrong_order.rs ... FAILED tests/actual_tests/lone_joined_pattern.rs ... FAILED tests/actual_tests/pattern_too_many_arrow.rs ... FAILED tests/actual_tests/pattern_too_many_arrow_above.rs ... FAILED +tests/actual_tests/rustc_ice.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/rustc_ice.rs ... FAILED tests/actual_tests/touching_above_below.rs ... FAILED tests/actual_tests/touching_above_below_chain.rs ... FAILED @@ -455,58 +462,90 @@ FAILURES: test result: FAIL. 15 failed; 1 passed Building dependencies ... ok +tests/actual_tests_bless/abort.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/abort.rs (revision `run`) ... FAILED tests/actual_tests_bless/abort.rs ... ok tests/actual_tests_bless/aux_build_not_found.rs ... FAILED tests/actual_tests_bless/aux_proc_macro_misuse.rs ... FAILED Building aux file tests/actual_tests_bless/auxiliary/the_proc_macro.rs ... ok +tests/actual_tests_bless/aux_proc_macro_no_main.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/aux_proc_macro_no_main.rs ... FAILED tests/actual_tests_bless/compile_flags_quotes.rs ... FAILED tests/actual_tests_bless/compiletest-rs-command.rs ... FAILED +tests/actual_tests_bless/failing_executable.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/failing_executable.rs (revision `run`) ... FAILED tests/actual_tests_bless/failing_executable.rs ... ok Building aux file tests/actual_tests_bless/auxiliary/foomp.rs ... ok +tests/actual_tests_bless/foomp_aux.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/foomp_aux.rs ... ok Building aux file tests/actual_tests_bless/auxiliary/nested.rs ... ok +tests/actual_tests_bless/nested_aux.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/nested_aux.rs ... ok +tests/actual_tests_bless/no_main.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/no_main.rs ... FAILED +tests/actual_tests_bless/no_main_manual.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/no_main_manual.rs ... FAILED +tests/actual_tests_bless/no_test.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/no_test.rs ... FAILED tests/actual_tests_bless/non_top_level_configs.rs ... FAILED +tests/actual_tests_bless/pass.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/pass.rs ... ok +tests/actual_tests_bless/pass_with_annotation.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/pass_with_annotation.rs ... FAILED tests/actual_tests_bless/revised_revision.rs ... FAILED +tests/actual_tests_bless/revisioned_executable.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisioned_executable.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisioned_executable.rs (revision `run.run`) ... ok tests/actual_tests_bless/revisioned_executable.rs (revision `run`) ... ok tests/actual_tests_bless/revisioned_executable.rs (revision `panic.run`) ... FAILED tests/actual_tests_bless/revisioned_executable.rs (revision `panic`) ... ok +tests/actual_tests_bless/revisioned_executable_panic.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisioned_executable_panic.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisioned_executable_panic.rs (revision `run.run`) ... FAILED tests/actual_tests_bless/revisioned_executable_panic.rs (revision `run`) ... ok tests/actual_tests_bless/revisioned_executable_panic.rs (revision `panic.run`) ... ok tests/actual_tests_bless/revisioned_executable_panic.rs (revision `panic`) ... ok +tests/actual_tests_bless/revisions.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisions.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisions.rs (revision `foo`) ... ok tests/actual_tests_bless/revisions.rs (revision `bar`) ... ok +tests/actual_tests_bless/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisions_bad.rs (revision `foo`) ... ok tests/actual_tests_bless/revisions_bad.rs (revision `bar`) ... FAILED tests/actual_tests_bless/revisions_filter.rs (revision `foo`) ... ignored (in-test comment) tests/actual_tests_bless/revisions_filter.rs (revision `bar`) ... ignored (in-test comment) +tests/actual_tests_bless/revisions_filter2.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisions_filter2.rs (revision `foo`) ... ignored (in-test comment) tests/actual_tests_bless/revisions_filter2.rs (revision `bar`) ... ok +tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `foo`) ... ok tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `bar`) ... ok +tests/actual_tests_bless/revisions_same_everywhere.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/revisions_same_everywhere.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/revisions_same_everywhere.rs (revision `foo`) ... ok tests/actual_tests_bless/revisions_same_everywhere.rs (revision `bar`) ... ok +tests/actual_tests_bless/run_panic.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/run_panic.rs (revision `run`) ... ok tests/actual_tests_bless/run_panic.rs ... ok +tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/rustfix-fail-revisions.a.fixed (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/rustfix-fail-revisions.b.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/rustfix-fail-revisions.a.fixed (revision `a`) ... FAILED tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `a`) ... ok tests/actual_tests_bless/rustfix-fail-revisions.b.fixed (revision `b`) ... FAILED tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `b`) ... ok +tests/actual_tests_bless/rustfix-fail.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless/rustfix-fail.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/rustfix-fail.fixed ... FAILED tests/actual_tests_bless/rustfix-fail.rs ... ok +tests/actual_tests_bless/unicode.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/unicode.rs ... FAILED tests/actual_tests_bless/unknown_revision.rs ... FAILED tests/actual_tests_bless/unknown_revision2.rs ... FAILED +tests/actual_tests_bless/wrong_diagnostic_code.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless/wrong_diagnostic_code.rs ... FAILED FAILED TEST: tests/actual_tests_bless/abort.rs (revision `run`) @@ -1081,10 +1120,18 @@ FAILURES: test result: FAIL. 23 failed; 24 passed; 3 ignored Building dependencies ... ok +tests/actual_tests_bless_yolo/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless_yolo/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless_yolo/revisions_bad.rs (revision `foo`) ... ok tests/actual_tests_bless_yolo/revisions_bad.rs (revision `bar`) ... ok +tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.fixed ... ok tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.rs ... ok +tests/actual_tests_bless_yolo/rustfix-multiple-fail.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless_yolo/rustfix-multiple-fail.1.fixed (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless_yolo/rustfix-multiple-fail.2.fixed (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests_bless_yolo/rustfix-multiple-fail.3.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests_bless_yolo/rustfix-multiple-fail.1.fixed ... ok tests/actual_tests_bless_yolo/rustfix-multiple-fail.2.fixed ... FAILED tests/actual_tests_bless_yolo/rustfix-multiple-fail.3.fixed ... ok diff --git a/tests/integrations/basic/Cargo.stdout b/tests/integrations/basic/Cargo.stdout index cdd35c38..664e5d8b 100644 --- a/tests/integrations/basic/Cargo.stdout +++ b/tests/integrations/basic/Cargo.stdout @@ -10,38 +10,66 @@ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; fini Building dependencies ... ok Building aux file tests/actual_tests/auxiliary/proc_macro_attr.rs ... ok +tests/actual_tests/aux_attr_proc_macro.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/aux_attr_proc_macro.rs ... ok Building aux file tests/actual_tests/auxiliary/derive_proc_macro.rs ... ok +tests/actual_tests/aux_derive.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/aux_derive.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/aux_derive.fixed ... ok tests/actual_tests/aux_derive.rs ... ok Building aux file tests/actual_tests/auxiliary/the_proc_macro.rs ... ok +tests/actual_tests/aux_proc_macro.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/aux_proc_macro.rs ... ok +tests/actual_tests/dep_derive.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/dep_derive.rs (revision `run`) ... ok tests/actual_tests/dep_derive.rs ... ok +tests/actual_tests/error_above.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/error_above.rs ... ok +tests/actual_tests/executable.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/executable.rs (revision `run`) ... ok tests/actual_tests/executable.rs ... ok +tests/actual_tests/foomp-rustfix.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/foomp-rustfix.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp-rustfix.fixed ... ok tests/actual_tests/foomp-rustfix.rs ... ok +tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/foomp.rs ... ok +tests/actual_tests/joined_above.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/joined_above.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/joined_above.fixed ... ok tests/actual_tests/joined_above.rs ... ok +tests/actual_tests/joined_below.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/joined_below.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/joined_below.fixed ... ok tests/actual_tests/joined_below.rs ... ok +tests/actual_tests/joined_mixed.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/joined_mixed.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/joined_mixed.fixed ... ok tests/actual_tests/joined_mixed.rs ... ok +tests/actual_tests/mac_span.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/mac_span.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/mac_span.fixed ... ok tests/actual_tests/mac_span.rs ... ok +tests/actual_tests/match_diagnostic_code.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/match_diagnostic_code.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/match_diagnostic_code.fixed ... ok tests/actual_tests/match_diagnostic_code.rs ... ok +tests/actual_tests/no_rustfix.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/no_rustfix.rs ... ok +tests/actual_tests/rustfix-multiple.rs (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/rustfix-multiple.1.fixed (revision `waiting for dependencies to finish building`) ... ok +tests/actual_tests/rustfix-multiple.2.fixed (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/rustfix-multiple.1.fixed ... ok tests/actual_tests/rustfix-multiple.2.fixed ... ok tests/actual_tests/rustfix-multiple.rs ... ok +tests/actual_tests/stdin.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/stdin.rs (revision `run`) ... ok tests/actual_tests/stdin.rs ... ok +tests/actual_tests/unicode.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/unicode.rs ... ok +tests/actual_tests/windows_paths.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/windows_paths.rs ... ok +tests/actual_tests/subdir/aux_proc_macro.rs (revision `waiting for dependencies to finish building`) ... ok tests/actual_tests/subdir/aux_proc_macro.rs ... ok test result: ok. 31 passed diff --git a/tests/integrations/dep-fail/Cargo.stdout b/tests/integrations/dep-fail/Cargo.stdout index c053179c..e2ce758a 100644 --- a/tests/integrations/dep-fail/Cargo.stdout +++ b/tests/integrations/dep-fail/Cargo.stdout @@ -4,6 +4,7 @@ running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished Building dependencies ... FAILED +tests/ui/basic_test.rs (revision `waiting for dependencies to finish building`) ... FAILED tests/ui/basic_test.rs ... FAILED FAILED TEST: tests/ui/basic_test.rs diff --git a/tests/integrations/ui_test_dep_bug/Cargo.stdout b/tests/integrations/ui_test_dep_bug/Cargo.stdout index 990abfae..72f43c4b 100644 --- a/tests/integrations/ui_test_dep_bug/Cargo.stdout +++ b/tests/integrations/ui_test_dep_bug/Cargo.stdout @@ -4,6 +4,7 @@ running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished Building dependencies ... ok +tests/ui/basic_test.rs (revision `waiting for dependencies to finish building`) ... ok tests/ui/basic_test.rs ... ok test result: ok. 1 passed