Skip to content

Commit

Permalink
Port run-make/libtest-json/validate_json.py to Rust
Browse files Browse the repository at this point in the history
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`.
  • Loading branch information
Zalathar committed Aug 17, 2024
1 parent 67d0973 commit 3116db6
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 3116db6

Please sign in to comment.