Skip to content

Commit

Permalink
Rollup merge of #129185 - Zalathar:validate-json, r=jieyouxu
Browse files Browse the repository at this point in the history
Port `run-make/libtest-json/validate_json.py` to Rust

This is a trivial Python script that simply tries to parse each line of stdin (i.e. the test process output) as JSON, to verify that the overall output is JSON Lines.

We can perform the same check directly in `rmake.rs` using `serde_json`.

r? ````@jieyouxu````
  • Loading branch information
jieyouxu authored Aug 18, 2024
2 parents 42b54a9 + 3116db6 commit 4e08768
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
15 changes: 13 additions & 2 deletions tests/run-make/libtest-json/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//@ ignore-cross-compile
//@ needs-unwind (test file contains #[should_panic] test)

use run_make_support::{cmd, diff, python_command, rustc};
use run_make_support::{cmd, diff, rustc, serde_json};

fn main() {
rustc().arg("--test").input("f.rs").run();
Expand All @@ -21,7 +21,18 @@ fn run_tests(extra_args: &[&str], expected_file: &str) {
.run_fail();
let test_stdout = &cmd_out.stdout_utf8();

python_command().arg("validate_json.py").stdin(test_stdout).run();
// Verify that the test process output is JSON Lines, i.e. each line is valid JSON.
for (line, n) in test_stdout.lines().zip(1..) {
if let Err(e) = serde_json::from_str::<serde_json::Value>(line) {
panic!(
"could not parse JSON on line {n}: {e}\n\
\n\
=== STDOUT ===\n\
{test_stdout}\
=============="
);
}
}

diff()
.expected_file(expected_file)
Expand Down
8 changes: 0 additions & 8 deletions tests/run-make/libtest-json/validate_json.py

This file was deleted.

0 comments on commit 4e08768

Please sign in to comment.