1
Fork 0

Auto merge of #94566 - yanganto:show-ignore-message, r=m-ou-se

Show ignore message in console and json output

- Provide ignore the message in console and JSON output
- Modify the ignore message style in the log file

related: #92714
This commit is contained in:
bors 2022-03-29 15:18:57 +00:00
commit 05d22212e8
9 changed files with 33 additions and 12 deletions

View file

@ -118,7 +118,7 @@ impl ConsoleTestState {
TestResult::TrIgnored => { TestResult::TrIgnored => {
#[cfg(not(bootstrap))] #[cfg(not(bootstrap))]
if let Some(msg) = ignore_message { if let Some(msg) = ignore_message {
format!("ignored, {msg}") format!("ignored: {msg}")
} else { } else {
"ignored".to_owned() "ignored".to_owned()
} }

View file

@ -121,6 +121,19 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
), ),
TestResult::TrIgnored => { TestResult::TrIgnored => {
#[cfg(not(bootstrap))]
return self.write_event(
"test",
desc.name.as_slice(),
"ignored",
exec_time,
stdout,
desc.ignore_message
.map(|msg| format!(r#""message": "{}""#, EscapedString(msg)))
.as_deref(),
);
#[cfg(bootstrap)]
self.write_event("test", desc.name.as_slice(), "ignored", exec_time, stdout, None) self.write_event("test", desc.name.as_slice(), "ignored", exec_time, stdout, None)
} }

View file

@ -45,8 +45,12 @@ impl<T: Write> PrettyFormatter<T> {
self.write_short_result("FAILED", term::color::RED) self.write_short_result("FAILED", term::color::RED)
} }
pub fn write_ignored(&mut self) -> io::Result<()> { pub fn write_ignored(&mut self, message: Option<&'static str>) -> io::Result<()> {
self.write_short_result("ignored", term::color::YELLOW) if let Some(message) = message {
self.write_short_result(&format!("ignored, {}", message), term::color::YELLOW)
} else {
self.write_short_result("ignored", term::color::YELLOW)
}
} }
pub fn write_time_failed(&mut self) -> io::Result<()> { pub fn write_time_failed(&mut self) -> io::Result<()> {
@ -214,7 +218,12 @@ impl<T: Write> OutputFormatter for PrettyFormatter<T> {
match *result { match *result {
TestResult::TrOk => self.write_ok()?, TestResult::TrOk => self.write_ok()?,
TestResult::TrFailed | TestResult::TrFailedMsg(_) => self.write_failed()?, TestResult::TrFailed | TestResult::TrFailedMsg(_) => self.write_failed()?,
TestResult::TrIgnored => self.write_ignored()?, TestResult::TrIgnored => {
#[cfg(not(bootstrap))]
self.write_ignored(desc.ignore_message)?;
#[cfg(bootstrap)]
self.write_ignored(None)?;
}
TestResult::TrBench(ref bs) => { TestResult::TrBench(ref bs) => {
self.write_bench()?; self.write_bench()?;
self.write_plain(&format!(": {}", fmt_bench_samples(bs)))?; self.write_plain(&format!(": {}", fmt_bench_samples(bs)))?;

View file

@ -5,7 +5,7 @@
OUTPUT_FILE_DEFAULT := $(TMPDIR)/libtest-json-output-default.json OUTPUT_FILE_DEFAULT := $(TMPDIR)/libtest-json-output-default.json
OUTPUT_FILE_STDOUT_SUCCESS := $(TMPDIR)/libtest-json-output-stdout-success.json OUTPUT_FILE_STDOUT_SUCCESS := $(TMPDIR)/libtest-json-output-stdout-success.json
all: all: f.rs validate_json.py output-default.json output-stdout-success.json
$(RUSTC) --test f.rs $(RUSTC) --test f.rs
RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json > $(OUTPUT_FILE_DEFAULT) || true RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json > $(OUTPUT_FILE_DEFAULT) || true
RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json --show-output > $(OUTPUT_FILE_STDOUT_SUCCESS) || true RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json --show-output > $(OUTPUT_FILE_STDOUT_SUCCESS) || true

View file

@ -16,7 +16,7 @@ fn c() {
} }
#[test] #[test]
#[ignore] #[ignore = "msg"]
fn d() { fn d() {
assert!(false); assert!(false);
} }

View file

@ -6,5 +6,5 @@
{ "type": "test", "event": "started", "name": "c" } { "type": "test", "event": "started", "name": "c" }
{ "type": "test", "name": "c", "event": "ok" } { "type": "test", "name": "c", "event": "ok" }
{ "type": "test", "event": "started", "name": "d" } { "type": "test", "event": "started", "name": "d" }
{ "type": "test", "name": "d", "event": "ignored" } { "type": "test", "name": "d", "event": "ignored", "message": "msg" }
{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME } { "type": "suite", "event": "failed", "passed": 2, "failed": 1, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME }

View file

@ -6,5 +6,5 @@
{ "type": "test", "event": "started", "name": "c" } { "type": "test", "event": "started", "name": "c" }
{ "type": "test", "name": "c", "event": "ok", "stdout": "thread 'main' panicked at 'assertion failed: false', f.rs:15:5\n" } { "type": "test", "name": "c", "event": "ok", "stdout": "thread 'main' panicked at 'assertion failed: false', f.rs:15:5\n" }
{ "type": "test", "event": "started", "name": "d" } { "type": "test", "event": "started", "name": "d" }
{ "type": "test", "name": "d", "event": "ignored" } { "type": "test", "name": "d", "event": "ignored", "message": "msg" }
{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME } { "type": "suite", "event": "failed", "passed": 2, "failed": 1, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME }

View file

@ -5,7 +5,6 @@
// ignore-emscripten no threads support // ignore-emscripten no threads support
// run-pass // run-pass
#[test] #[test]
fn test_ok() { fn test_ok() {
let _a = true; let _a = true;
@ -18,9 +17,9 @@ fn test_panic() {
} }
#[test] #[test]
#[ignore] #[ignore = "msg"]
fn test_no_run() { fn test_no_run() {
loop{ loop {
println!("Hello, world"); println!("Hello, world");
} }
} }

View file

@ -1,6 +1,6 @@
running 3 tests running 3 tests
test test_no_run ... ignored test test_no_run ... ignored, msg
test test_ok ... ok test test_ok ... ok
test test_panic - should panic ... ok test test_panic - should panic ... ok