diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-01-29 20:03:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-29 20:03:36 +0100 |
| commit | 192eecd53a41bb32f2a44a854697835ff67ee890 (patch) | |
| tree | 511430fdd8f7a4530a46951fd330d7e217d51817 /library/test | |
| parent | 94809b3345bce28bfdde83d68fea5af9aa01af2e (diff) | |
| parent | 77133370ce04666af364c218ba2b2c7ccfb60065 (diff) | |
| download | rust-192eecd53a41bb32f2a44a854697835ff67ee890.tar.gz rust-192eecd53a41bb32f2a44a854697835ff67ee890.zip | |
Rollup merge of #106769 - lenko-d:libtest-print_why_a_test_was_ignored_if_its_the_only_test_specified, r=Mark-Simulacrum
libtest: Print why a test was ignored if it's the only test specified. Fixes [#106659](https://github.com/rust-lang/rust/issues/106659) Needed by [106763](https://github.com/rust-lang/rust/pull/106763)
Diffstat (limited to 'library/test')
| -rw-r--r-- | library/test/src/console.rs | 7 | ||||
| -rw-r--r-- | library/test/src/formatters/terse.rs | 9 | ||||
| -rw-r--r-- | library/test/src/tests.rs | 1 |
3 files changed, 16 insertions, 1 deletions
diff --git a/library/test/src/console.rs b/library/test/src/console.rs index 24cbe035f2f..1ee68c8540b 100644 --- a/library/test/src/console.rs +++ b/library/test/src/console.rs @@ -53,6 +53,7 @@ pub struct ConsoleTestState { pub metrics: MetricMap, pub failures: Vec<(TestDesc, Vec<u8>)>, pub not_failures: Vec<(TestDesc, Vec<u8>)>, + pub ignores: Vec<(TestDesc, Vec<u8>)>, pub time_failures: Vec<(TestDesc, Vec<u8>)>, pub options: Options, } @@ -76,6 +77,7 @@ impl ConsoleTestState { metrics: MetricMap::new(), failures: Vec::new(), not_failures: Vec::new(), + ignores: Vec::new(), time_failures: Vec::new(), options: opts.options, }) @@ -194,7 +196,10 @@ fn handle_test_result(st: &mut ConsoleTestState, completed_test: CompletedTest) st.passed += 1; st.not_failures.push((test, stdout)); } - TestResult::TrIgnored => st.ignored += 1, + TestResult::TrIgnored => { + st.ignored += 1; + st.ignores.push((test, stdout)); + } TestResult::TrBench(bs) => { st.metrics.insert_metric( test.name.as_slice(), diff --git a/library/test/src/formatters/terse.rs b/library/test/src/formatters/terse.rs index 0837ab16905..a431acfbc27 100644 --- a/library/test/src/formatters/terse.rs +++ b/library/test/src/formatters/terse.rs @@ -254,6 +254,15 @@ impl<T: Write> OutputFormatter for TerseFormatter<T> { self.write_plain("\n\n")?; + // Custom handling of cases where there is only 1 test to execute and that test was ignored. + // We want to show more detailed information(why was the test ignored) for investigation purposes. + if self.total_test_count == 1 && state.ignores.len() == 1 { + let test_desc = &state.ignores[0].0; + if let Some(im) = test_desc.ignore_message { + self.write_plain(format!("test: {}, ignore_message: {}\n\n", test_desc.name, im))?; + } + } + Ok(success) } } diff --git a/library/test/src/tests.rs b/library/test/src/tests.rs index 3a0260f86cf..44776fb0a31 100644 --- a/library/test/src/tests.rs +++ b/library/test/src/tests.rs @@ -790,6 +790,7 @@ fn should_sort_failures_before_printing_them() { failures: vec![(test_b, Vec::new()), (test_a, Vec::new())], options: Options::new(), not_failures: Vec::new(), + ignores: Vec::new(), time_failures: Vec::new(), }; |
