mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00

Change rustdoc's `--emit` to allow only one instance of each type, regardless of the actual data that `--emit` carries. This matches rustc's `--emit` behavior. As of the writing, only `dep-info` emit type carries extra data. See <https://github.com/rust-lang/rust/issues/141664>
49 lines
1.8 KiB
Rust
49 lines
1.8 KiB
Rust
// This is a simple smoke test for rustdoc's `--emit dep-info` feature. It prints out
|
|
// information about dependencies in a Makefile-compatible format, as a `.d` file.
|
|
|
|
//@ needs-target-std
|
|
|
|
use run_make_support::assertion_helpers::assert_contains;
|
|
use run_make_support::{path, rfs, rustdoc};
|
|
|
|
fn main() {
|
|
// We're only emitting dep info, so we shouldn't be running static analysis to
|
|
// figure out that this program is erroneous.
|
|
// Ensure that all kinds of input reading flags end up in dep-info.
|
|
rustdoc()
|
|
.input("lib.rs")
|
|
.arg("-Zunstable-options")
|
|
.arg("--html-before-content=before.html")
|
|
.arg("--markdown-after-content=after.md")
|
|
.arg("--extend-css=extend.css")
|
|
.arg("--theme=theme.css")
|
|
.emit("dep-info")
|
|
.run();
|
|
|
|
let content = rfs::read_to_string("foo.d");
|
|
assert_contains(&content, "lib.rs:");
|
|
assert_contains(&content, "foo.rs:");
|
|
assert_contains(&content, "bar.rs:");
|
|
assert_contains(&content, "doc.md:");
|
|
assert_contains(&content, "after.md:");
|
|
assert_contains(&content, "before.html:");
|
|
assert_contains(&content, "extend.css:");
|
|
assert_contains(&content, "theme.css:");
|
|
|
|
// Now we check that we can provide a file name to the `dep-info` argument.
|
|
rustdoc().input("lib.rs").arg("-Zunstable-options").emit("dep-info=bla.d").run();
|
|
assert!(path("bla.d").exists());
|
|
|
|
// The last emit-type wins. The same behavior as rustc.
|
|
rustdoc()
|
|
.input("lib.rs")
|
|
.arg("-Zunstable-options")
|
|
.emit("dep-info=precedence1.d")
|
|
.emit("dep-info=precedence2.d")
|
|
.emit("dep-info=precedence3.d")
|
|
.run();
|
|
assert!(!path("precedence1.d").exists());
|
|
assert!(!path("precedence2.d").exists());
|
|
assert!(path("precedence3.d").exists());
|
|
}
|