// 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()); }