Auto merge of #46450 - Gilnaa:libtest_json_output, r=nrc
Libtest json output A revisit to my [last PR](https://github.com/rust-lang/rust/pull/45923). Events are now more atomic, printed in a flat hierarchy. For the normal test output: ``` running 1 test test f ... FAILED failures: ---- f stdout ---- thread 'f' panicked at 'assertion failed: `(left == right)` left: `3`, right: `4`', f.rs:3:1 note: Run with `RUST_BACKTRACE=1` for a backtrace. failures: f test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out ``` The JSON equivalent is: ``` { "type": "suite", "event": "started", "test_count": "1" } { "type": "test", "event": "started", "name": "f" } { "type": "test", "event": "failed", "name": "f" } { "type": "suite", "event": "failed", "passed": 0, "failed": 1, "allowed_fail": 0, "ignored": 0, "measured": 0, "filtered_out": "0" } { "type": "test_output", "name": "f", "output": "thread 'f' panicked at 'assertion failed: `(left == right)` left: `3`, right: `4`', f.rs:3:1 note: Run with `RUST_BACKTRACE=1` for a backtrace. " } ```
This commit is contained in:
commit
6b99adeb11
12 changed files with 1711 additions and 754 deletions
14
src/test/run-make/libtest-json/Makefile
Normal file
14
src/test/run-make/libtest-json/Makefile
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
-include ../tools.mk
|
||||
|
||||
# Test expected libtest's JSON output
|
||||
|
||||
OUTPUT_FILE := $(TMPDIR)/libtest-json-output.json
|
||||
|
||||
all:
|
||||
$(RUSTC) --test f.rs
|
||||
$(call RUN,f) -Z unstable-options --test-threads=1 --format=json > $(OUTPUT_FILE) || true
|
||||
|
||||
cat $(OUTPUT_FILE) | "$(PYTHON)" validate_json.py
|
||||
|
||||
# Compare to output file
|
||||
diff output.json $(OUTPUT_FILE)
|
||||
32
src/test/run-make/libtest-json/f.rs
Normal file
32
src/test/run-make/libtest-json/f.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#[test]
|
||||
fn a() {
|
||||
// Should pass
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn b() {
|
||||
assert!(false)
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn c() {
|
||||
assert!(false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn d() {
|
||||
assert!(false);
|
||||
}
|
||||
|
||||
10
src/test/run-make/libtest-json/output.json
Normal file
10
src/test/run-make/libtest-json/output.json
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{ "type": "suite", "event": "started", "test_count": "4" }
|
||||
{ "type": "test", "event": "started", "name": "a" }
|
||||
{ "type": "test", "name": "a", "event": "ok" }
|
||||
{ "type": "test", "event": "started", "name": "b" }
|
||||
{ "type": "test", "name": "b", "event": "failed", "stdout": "thread 'b' panicked at 'assertion failed: false', f.rs:18:5\nnote: Run with `RUST_BACKTRACE=1` for a backtrace.\n" }
|
||||
{ "type": "test", "event": "started", "name": "c" }
|
||||
{ "type": "test", "name": "c", "event": "ok" }
|
||||
{ "type": "test", "event": "started", "name": "d" }
|
||||
{ "type": "test", "name": "d", "event": "ignored" }
|
||||
{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": "0" }
|
||||
18
src/test/run-make/libtest-json/validate_json.py
Executable file
18
src/test/run-make/libtest-json/validate_json.py
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
import sys
|
||||
import json
|
||||
|
||||
# Try to decode line in order to ensure it is a valid JSON document
|
||||
for line in sys.stdin:
|
||||
json.loads(line)
|
||||
Loading…
Add table
Add a link
Reference in a new issue