Skip to content

Commit 6b1637c

Browse files
Reexport serde_json crate from run-make-support to give it access to run-make tests
1 parent a2a4f2b commit 6b1637c

File tree

3 files changed

+38
-39
lines changed

3 files changed

+38
-39
lines changed

Cargo.lock

+1
Original file line numberDiff line numberDiff line change
@@ -3149,6 +3149,7 @@ dependencies = [
31493149
"gimli 0.31.0",
31503150
"object 0.36.2",
31513151
"regex",
3152+
"serde_json",
31523153
"similar",
31533154
"wasmparser 0.214.0",
31543155
]

src/tools/run-make-support/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ wasmparser = { version = "0.214", default-features = false, features = ["std"] }
1111
regex = "1.8" # 1.8 to avoid memchr 2.6.0, as 2.5.0 is pinned in the workspace
1212
gimli = "0.31.0"
1313
build_helper = { path = "../build_helper" }
14+
serde_json = "1.0"
+36-39
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,54 @@
1-
use run_make_support::path_helpers::read_dir_entries_recursive;
1+
// This test ensures that all items from `foo` are correctly generated into the `redirect-map.json`
2+
// file with `--generate-redirect-map` rustdoc option.
3+
4+
use std::path::Path;
5+
26
use run_make_support::rfs::read_to_string;
3-
use run_make_support::{jzon, rustdoc};
7+
use run_make_support::{path, rustdoc, serde_json};
48

59
fn main() {
610
let out_dir = "out";
11+
let crate_name = "foo";
712
rustdoc()
813
.input("foo.rs")
14+
.crate_name(crate_name)
915
.arg("-Zunstable-options")
1016
.arg("--generate-redirect-map")
1117
.out_dir(&out_dir)
1218
.run();
1319

14-
let mut found_file = false;
15-
read_dir_entries_recursive(&out_dir, |path| {
16-
if !found_file
17-
&& path.is_file()
18-
&& path.file_name().map(|name| name == "redirect-map.json").unwrap_or(false)
19-
{
20-
found_file = true;
21-
let generated = read_to_string(path);
22-
let expected = read_to_string("expected.json");
23-
let generated = jzon::parse(&generated).expect("failed to parse JSON");
24-
let expected = jzon::parse(&expected).expect("failed to parse JSON");
20+
let generated = read_to_string(path(out_dir).join(crate_name).join("redirect-map.json"));
21+
let expected = read_to_string("expected.json");
22+
let generated: serde_json::Value =
23+
serde_json::from_str(&generated).expect("failed to parse JSON");
24+
let expected: serde_json::Value =
25+
serde_json::from_str(&expected).expect("failed to parse JSON");
26+
let expected = expected.as_object().unwrap();
2527

26-
let mut differences = Vec::new();
27-
for (key, expected_value) in expected.entries() {
28-
match generated.get(key) {
29-
Some(value) => {
30-
if expected_value != value {
31-
differences.push(format!("values for key `{key}` don't match"));
32-
}
33-
}
34-
None => differences.push(format!("missing key `{key}`")),
35-
}
36-
}
37-
for (key, data) in generated.entries() {
38-
if !expected.has_key(key) {
39-
differences
40-
.push(format!("Extra data not expected: key: `{key}`, data: `{data}`"));
28+
let mut differences = Vec::new();
29+
for (key, expected_value) in expected.iter() {
30+
match generated.get(key) {
31+
Some(value) => {
32+
if expected_value != value {
33+
differences.push(format!(
34+
"values for key `{key}` don't match: `{expected_value:?}` != `{value:?}`"
35+
));
4136
}
4237
}
43-
44-
if !differences.is_empty() {
45-
eprintln!("Found differences in JSON files:");
46-
for diff in differences {
47-
eprintln!("=> {diff}");
48-
}
49-
std::process::exit(1);
50-
}
38+
None => differences.push(format!("missing key `{key}`")),
39+
}
40+
}
41+
for (key, data) in generated.as_object().unwrap().iter() {
42+
if !expected.contains_key(key) {
43+
differences.push(format!("Extra data not expected: key: `{key}`, data: `{data}`"));
5144
}
52-
});
45+
}
5346

54-
if !found_file {
55-
panic!("`redirect-map.json` file was not found");
47+
if !differences.is_empty() {
48+
eprintln!("Found differences in JSON files:");
49+
for diff in differences {
50+
eprintln!("=> {diff}");
51+
}
52+
panic!("Found differences in JSON files");
5653
}
5754
}

0 commit comments

Comments
 (0)