summaryrefslogtreecommitdiffstats
path: root/tests/run-make/rustdoc-map-file
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-make/rustdoc-map-file')
-rw-r--r--tests/run-make/rustdoc-map-file/Makefile5
-rw-r--r--tests/run-make/rustdoc-map-file/expected.json5
-rw-r--r--tests/run-make/rustdoc-map-file/foo.rs16
-rwxr-xr-xtests/run-make/rustdoc-map-file/validate_json.py41
4 files changed, 67 insertions, 0 deletions
diff --git a/tests/run-make/rustdoc-map-file/Makefile b/tests/run-make/rustdoc-map-file/Makefile
new file mode 100644
index 000000000..5cbf7747a
--- /dev/null
+++ b/tests/run-make/rustdoc-map-file/Makefile
@@ -0,0 +1,5 @@
+include ../tools.mk
+
+all:
+ $(RUSTDOC) -Z unstable-options --generate-redirect-map foo.rs -o "$(TMPDIR)/out"
+ "$(PYTHON)" validate_json.py "$(TMPDIR)/out"
diff --git a/tests/run-make/rustdoc-map-file/expected.json b/tests/run-make/rustdoc-map-file/expected.json
new file mode 100644
index 000000000..6b1ccbeac
--- /dev/null
+++ b/tests/run-make/rustdoc-map-file/expected.json
@@ -0,0 +1,5 @@
+{
+ "foo/macro.foo!.html": "foo/macro.foo.html",
+ "foo/private/struct.Quz.html": "foo/struct.Quz.html",
+ "foo/hidden/struct.Bar.html": "foo/struct.Bar.html"
+}
diff --git a/tests/run-make/rustdoc-map-file/foo.rs b/tests/run-make/rustdoc-map-file/foo.rs
new file mode 100644
index 000000000..e12b9d229
--- /dev/null
+++ b/tests/run-make/rustdoc-map-file/foo.rs
@@ -0,0 +1,16 @@
+pub use private::Quz;
+pub use hidden::Bar;
+
+mod private {
+ pub struct Quz;
+}
+
+#[doc(hidden)]
+pub mod hidden {
+ pub struct Bar;
+}
+
+#[macro_export]
+macro_rules! foo {
+ () => {}
+}
diff --git a/tests/run-make/rustdoc-map-file/validate_json.py b/tests/run-make/rustdoc-map-file/validate_json.py
new file mode 100755
index 000000000..5c14c90b7
--- /dev/null
+++ b/tests/run-make/rustdoc-map-file/validate_json.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import json
+
+
+def find_redirect_map_file(folder, errors):
+ for root, dirs, files in os.walk(folder):
+ for name in files:
+ if not name.endswith("redirect-map.json"):
+ continue
+ with open(os.path.join(root, name)) as f:
+ data = json.load(f)
+ with open("expected.json") as f:
+ expected = json.load(f)
+ for key in expected:
+ if expected[key] != data.get(key):
+ errors.append("Expected `{}` for key `{}`, found: `{}`".format(
+ expected[key], key, data.get(key)))
+ else:
+ del data[key]
+ for key in data:
+ errors.append("Extra data not expected: key: `{}`, data: `{}`".format(
+ key, data[key]))
+ return True
+ return False
+
+
+if len(sys.argv) != 2:
+ print("Expected doc directory to check!")
+ sys.exit(1)
+
+errors = []
+if not find_redirect_map_file(sys.argv[1], errors):
+ print("Didn't find the map file in `{}`...".format(sys.argv[1]))
+ sys.exit(1)
+for err in errors:
+ print("=> {}".format(err))
+if len(errors) != 0:
+ sys.exit(1)