about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2024-08-16 15:09:04 +0200
committerGuillaume Gomez <guillaume.gomez@huawei.com>2024-08-16 16:32:07 +0200
commit6b1637c477f9f40821c68a9452f7435d9707948d (patch)
tree7984012dbd3416e35b477762212fc6d79157de46
parenta2a4f2bcb59115e5e7fbdeb1fbe1f261999b7bd6 (diff)
downloadrust-6b1637c477f9f40821c68a9452f7435d9707948d.tar.gz
rust-6b1637c477f9f40821c68a9452f7435d9707948d.zip
Reexport `serde_json` crate from run-make-support to give it access to `run-make` tests
-rw-r--r--Cargo.lock1
-rw-r--r--src/tools/run-make-support/Cargo.toml1
-rw-r--r--tests/run-make/rustdoc-map-file/rmake.rs75
3 files changed, 38 insertions, 39 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 1aa0b2ea4a3..0b546d6e5ee 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3149,6 +3149,7 @@ dependencies = [
  "gimli 0.31.0",
  "object 0.36.2",
  "regex",
+ "serde_json",
  "similar",
  "wasmparser 0.214.0",
 ]
diff --git a/src/tools/run-make-support/Cargo.toml b/src/tools/run-make-support/Cargo.toml
index c4d5446a248..eae6022b803 100644
--- a/src/tools/run-make-support/Cargo.toml
+++ b/src/tools/run-make-support/Cargo.toml
@@ -11,3 +11,4 @@ wasmparser = { version = "0.214", default-features = false, features = ["std"] }
 regex = "1.8" # 1.8 to avoid memchr 2.6.0, as 2.5.0 is pinned in the workspace
 gimli = "0.31.0"
 build_helper = { path = "../build_helper" }
+serde_json = "1.0"
diff --git a/tests/run-make/rustdoc-map-file/rmake.rs b/tests/run-make/rustdoc-map-file/rmake.rs
index 9b19279dee6..d7e3510fe31 100644
--- a/tests/run-make/rustdoc-map-file/rmake.rs
+++ b/tests/run-make/rustdoc-map-file/rmake.rs
@@ -1,57 +1,54 @@
-use run_make_support::path_helpers::read_dir_entries_recursive;
+// This test ensures that all items from `foo` are correctly generated into the `redirect-map.json`
+// file with `--generate-redirect-map` rustdoc option.
+
+use std::path::Path;
+
 use run_make_support::rfs::read_to_string;
-use run_make_support::{jzon, rustdoc};
+use run_make_support::{path, rustdoc, serde_json};
 
 fn main() {
     let out_dir = "out";
+    let crate_name = "foo";
     rustdoc()
         .input("foo.rs")
+        .crate_name(crate_name)
         .arg("-Zunstable-options")
         .arg("--generate-redirect-map")
         .out_dir(&out_dir)
         .run();
 
-    let mut found_file = false;
-    read_dir_entries_recursive(&out_dir, |path| {
-        if !found_file
-            && path.is_file()
-            && path.file_name().map(|name| name == "redirect-map.json").unwrap_or(false)
-        {
-            found_file = true;
-            let generated = read_to_string(path);
-            let expected = read_to_string("expected.json");
-            let generated = jzon::parse(&generated).expect("failed to parse JSON");
-            let expected = jzon::parse(&expected).expect("failed to parse JSON");
+    let generated = read_to_string(path(out_dir).join(crate_name).join("redirect-map.json"));
+    let expected = read_to_string("expected.json");
+    let generated: serde_json::Value =
+        serde_json::from_str(&generated).expect("failed to parse JSON");
+    let expected: serde_json::Value =
+        serde_json::from_str(&expected).expect("failed to parse JSON");
+    let expected = expected.as_object().unwrap();
 
-            let mut differences = Vec::new();
-            for (key, expected_value) in expected.entries() {
-                match generated.get(key) {
-                    Some(value) => {
-                        if expected_value != value {
-                            differences.push(format!("values for key `{key}` don't match"));
-                        }
-                    }
-                    None => differences.push(format!("missing key `{key}`")),
-                }
-            }
-            for (key, data) in generated.entries() {
-                if !expected.has_key(key) {
-                    differences
-                        .push(format!("Extra data not expected: key: `{key}`, data: `{data}`"));
+    let mut differences = Vec::new();
+    for (key, expected_value) in expected.iter() {
+        match generated.get(key) {
+            Some(value) => {
+                if expected_value != value {
+                    differences.push(format!(
+                        "values for key `{key}` don't match: `{expected_value:?}` != `{value:?}`"
+                    ));
                 }
             }
-
-            if !differences.is_empty() {
-                eprintln!("Found differences in JSON files:");
-                for diff in differences {
-                    eprintln!("=> {diff}");
-                }
-                std::process::exit(1);
-            }
+            None => differences.push(format!("missing key `{key}`")),
+        }
+    }
+    for (key, data) in generated.as_object().unwrap().iter() {
+        if !expected.contains_key(key) {
+            differences.push(format!("Extra data not expected: key: `{key}`, data: `{data}`"));
         }
-    });
+    }
 
-    if !found_file {
-        panic!("`redirect-map.json` file was not found");
+    if !differences.is_empty() {
+        eprintln!("Found differences in JSON files:");
+        for diff in differences {
+            eprintln!("=> {diff}");
+        }
+        panic!("Found differences in JSON files");
     }
 }