Skip to content

Commit

Permalink
Rollup merge of rust-lang#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
tgross35 authored Aug 17, 2024
2 parents d70f8b9 + 3116db6 commit 6500f11
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 6500f11

Please sign in to comment.