blob: 81b7defafc6c01f1dd3ecbbed1da5442d3e0d972 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  | 
//@ ignore-cross-compile
use run_make_support::{htmldocck, rustc, rustdoc, tmp_dir};
fn main() {
    let tmp_dir = tmp_dir();
    let out_dir = tmp_dir.join("rustdoc");
    let ex_dir = tmp_dir.join("ex.calls");
    let proc_crate_name = "foobar_macro";
    let crate_name = "foobar";
    let dylib_name = String::from_utf8(
        rustc()
            .crate_name(proc_crate_name)
            .crate_type("dylib")
            .arg("--print")
            .arg("file-names")
            .arg("-")
            .command_output()
            .stdout,
    )
    .unwrap();
    rustc()
        .input("src/proc.rs")
        .crate_name(proc_crate_name)
        .edition("2021")
        .crate_type("proc-macro")
        .emit("dep-info,link")
        .run();
    rustc()
        .input("src/lib.rs")
        .crate_name(crate_name)
        .edition("2021")
        .crate_type("lib")
        .emit("dep-info,link")
        .run();
    rustdoc()
        .input("examples/ex.rs")
        .crate_name("ex")
        .crate_type("bin")
        .output(&out_dir)
        .extern_(crate_name, tmp_dir.join(format!("lib{crate_name}.rlib")))
        .extern_(proc_crate_name, tmp_dir.join(dylib_name.trim()))
        .arg("-Zunstable-options")
        .arg("--scrape-examples-output-path")
        .arg(&ex_dir)
        .arg("--scrape-examples-target-crate")
        .arg(crate_name)
        .run();
    rustdoc()
        .input("src/lib.rs")
        .crate_name(crate_name)
        .crate_type("lib")
        .output(&out_dir)
        .arg("-Zunstable-options")
        .arg("--with-examples")
        .arg(&ex_dir)
        .run();
    assert!(htmldocck().arg(out_dir).arg("src/lib.rs").status().unwrap().success());
}
 
  |