1 //! Tests for the `cargo rustdoc` command.
3 use cargo_test_support
::{basic_manifest, cross_compile, project}
;
7 let p
= project().file("src/lib.rs", "").build();
12 [DOCUMENTING] foo v0.0.1 ([CWD])
13 [RUNNING] `rustdoc [..]--crate-name foo src/lib.rs [..]\
16 -L dependency=[CWD]/target/debug/deps [..]`
17 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
18 [GENERATED] [CWD]/target/doc/foo/index.html
26 let p
= project().file("src/lib.rs", "").build();
28 p
.cargo("rustdoc -v -- --cfg=foo")
31 [DOCUMENTING] foo v0.0.1 ([CWD])
32 [RUNNING] `rustdoc [..]--crate-name foo src/lib.rs [..]\
37 -L dependency=[CWD]/target/debug/deps [..]`
38 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
39 [GENERATED] [CWD]/target/doc/foo/index.html
46 fn rustdoc_binary_args_passed() {
47 let p
= project().file("src/main.rs", "").build();
51 .arg("--markdown-no-toc")
52 .with_stderr_contains("[RUNNING] `rustdoc [..] --markdown-no-toc[..]`")
57 fn rustdoc_foo_with_bar_dependency() {
71 .file("src/lib.rs", "extern crate bar; pub fn foo() {}")
75 .file("Cargo.toml", &basic_manifest("bar", "0.0.1"))
76 .file("src/lib.rs", "pub fn baz() {}")
79 foo
.cargo("rustdoc -v -- --cfg=foo")
82 [CHECKING] bar v0.0.1 ([..])
83 [RUNNING] `rustc [..]bar/src/lib.rs [..]`
84 [DOCUMENTING] foo v0.0.1 ([CWD])
85 [RUNNING] `rustdoc [..]--crate-name foo src/lib.rs [..]\
90 -L dependency=[CWD]/target/debug/deps \
92 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
93 [GENERATED] [CWD]/target/doc/foo/index.html
100 fn rustdoc_only_bar_dependency() {
114 .file("src/main.rs", "extern crate bar; fn main() { bar::baz() }")
118 .file("Cargo.toml", &basic_manifest("bar", "0.0.1"))
119 .file("src/lib.rs", "pub fn baz() {}")
122 foo
.cargo("rustdoc -v -p bar -- --cfg=foo")
125 [DOCUMENTING] bar v0.0.1 ([..])
126 [RUNNING] `rustdoc [..]--crate-name bar [..]bar/src/lib.rs [..]\
127 -o [CWD]/target/doc \
131 -L dependency=[CWD]/target/debug/deps [..]`
132 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
133 [GENERATED] [CWD]/target/doc/bar/index.html
140 fn rustdoc_same_name_documents_lib() {
142 .file("src/main.rs", "fn main() {}")
143 .file("src/lib.rs", r
#" "#)
146 p
.cargo("rustdoc -v -- --cfg=foo")
149 [DOCUMENTING] foo v0.0.1 ([..])
150 [RUNNING] `rustdoc [..]--crate-name foo src/lib.rs [..]\
151 -o [CWD]/target/doc \
155 -L dependency=[CWD]/target/debug/deps [..]`
156 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
157 [GENERATED] [CWD]/target/doc/foo/index.html
178 .file("src/lib.rs", "")
181 p
.cargo("rustdoc --verbose --features quux")
182 .with_stderr_contains("[..]feature=[..]quux[..]")
187 fn proc_macro_crate_type() {
202 .file("src/lib.rs", "")
205 p
.cargo("rustdoc --verbose")
206 .with_stderr_contains(
208 [RUNNING] `rustdoc --crate-type proc-macro [..]`
215 fn rustdoc_target() {
216 if cross_compile
::disabled() {
220 let p
= project().file("src/lib.rs", "").build();
222 p
.cargo("rustdoc --verbose --target")
223 .arg(cross_compile
::alternate())
224 .with_stderr(format
!(
226 [DOCUMENTING] foo v0.0.1 ([..])
227 [RUNNING] `rustdoc [..]--crate-name foo src/lib.rs [..]\
229 -o [CWD]/target/{target}/doc \
231 -L dependency=[CWD]/target/{target}/debug/deps \
232 -L dependency=[CWD]/target/debug/deps[..]`
233 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
234 [GENERATED] [CWD]/target/[..]/doc/foo/index.html",
235 target
= cross_compile
::alternate()
241 fn fail_with_glob() {
250 .file("bar/Cargo.toml", &basic_manifest("bar", "0.1.0"))
251 .file("bar/src/lib.rs", "pub fn bar() { break_the_build(); }")
254 p
.cargo("rustdoc -p '*z'")
256 .with_stderr("[ERROR] Glob patterns on package selection are not supported.")