Auto merge of #127335 - Oneirical:put-on-a-petestal, r=jieyouxu · rust-lang/rust@289deb9 (original) (raw)

``

1

`+

// This test checks the functionality of one of rustdoc's unstable options,

`

``

2

`` +

// the ability to specify emit restrictions with --emit.

``

``

3

`` +

// invocation-only should only emit crate-specific files.

``

``

4

`` +

// toolchain-only should only emit toolchain-specific files.

``

``

5

`` +

// all-shared should only emit files that can be shared between crates.

``

``

6

`+

// See https://github.com/rust-lang/rust/pull/83478

`

``

7

+

``

8

`+

use run_make_support::{has_extension, has_prefix, rustdoc, shallow_find_files};

`

``

9

`+

use std::path::Path;

`

``

10

+

``

11

`+

fn main() {

`

``

12

`+

rustdoc()

`

``

13

`+

.arg("-Zunstable-options")

`

``

14

`+

.arg("--emit=invocation-specific")

`

``

15

`+

.output("invocation-only")

`

``

16

`+

.arg("--resource-suffix=-xxx")

`

``

17

`+

.args(&["--theme", "y.css"])

`

``

18

`+

.args(&["--extend-css", "z.css"])

`

``

19

`+

.input("x.rs")

`

``

20

`+

.run();

`

``

21

`+

assert!(Path::new("invocation-only/search-index-xxx.js").exists());

`

``

22

`+

assert!(Path::new("invocation-only/settings.html").exists());

`

``

23

`+

assert!(Path::new("invocation-only/x/all.html").exists());

`

``

24

`+

assert!(Path::new("invocation-only/x/index.html").exists());

`

``

25

`+

assert!(Path::new("invocation-only/theme-xxx.css").exists()); // generated from z.css

`

``

26

`+

assert!(!Path::new("invocation-only/storage-xxx.js").exists());

`

``

27

`+

assert!(!Path::new("invocation-only/SourceSerif4-It.ttf.woff2").exists());

`

``

28

`+

// FIXME: this probably shouldn't have a suffix

`

``

29

`+

assert!(Path::new("invocation-only/y-xxx.css").exists());

`

``

30

`` +

// FIXME: this is technically incorrect (see write_shared)

``

``

31

`+

assert!(!Path::new("invocation-only/main-xxx.js").exists());

`

``

32

+

``

33

`+

rustdoc()

`

``

34

`+

.arg("-Zunstable-options")

`

``

35

`+

.arg("--emit=toolchain-shared-resources")

`

``

36

`+

.output("toolchain-only")

`

``

37

`+

.arg("--resource-suffix=-xxx")

`

``

38

`+

.args(&["--extend-css", "z.css"])

`

``

39

`+

.input("x.rs")

`

``

40

`+

.run();

`

``

41

`+

assert_eq!(

`

``

42

`+

shallow_find_files("toolchain-only/static.files", |path| {

`

``

43

`+

has_prefix(path, "storage-") && has_extension(path, "js")

`

``

44

`+

})

`

``

45

`+

.len(),

`

``

46

`+

1

`

``

47

`+

);

`

``

48

`+

assert_eq!(

`

``

49

`+

shallow_find_files("toolchain-only/static.files", |path| {

`

``

50

`+

has_prefix(path, "SourceSerif4-It-") && has_extension(path, "woff2")

`

``

51

`+

})

`

``

52

`+

.len(),

`

``

53

`+

1

`

``

54

`+

);

`

``

55

`+

assert_eq!(

`

``

56

`+

shallow_find_files("toolchain-only/static.files", |path| {

`

``

57

`+

has_prefix(path, "main-") && has_extension(path, "js")

`

``

58

`+

})

`

``

59

`+

.len(),

`

``

60

`+

1

`

``

61

`+

);

`

``

62

`+

assert!(!Path::new("toolchain-only/search-index-xxx.js").exists());

`

``

63

`+

assert!(!Path::new("toolchain-only/x/index.html").exists());

`

``

64

`+

assert!(!Path::new("toolchain-only/theme.css").exists());

`

``

65

`+

assert!(!Path::new("toolchain-only/y-xxx.css").exists());

`

``

66

+

``

67

`+

rustdoc()

`

``

68

`+

.arg("-Zunstable-options")

`

``

69

`+

.arg("--emit=toolchain-shared-resources,unversioned-shared-resources")

`

``

70

`+

.output("all-shared")

`

``

71

`+

.arg("--resource-suffix=-xxx")

`

``

72

`+

.args(&["--extend-css", "z.css"])

`

``

73

`+

.input("x.rs")

`

``

74

`+

.run();

`

``

75

`+

assert_eq!(

`

``

76

`+

shallow_find_files("all-shared/static.files", |path| {

`

``

77

`+

has_prefix(path, "storage-") && has_extension(path, "js")

`

``

78

`+

})

`

``

79

`+

.len(),

`

``

80

`+

1

`

``

81

`+

);

`

``

82

`+

assert_eq!(

`

``

83

`+

shallow_find_files("all-shared/static.files", |path| {

`

``

84

`+

has_prefix(path, "SourceSerif4-It-") && has_extension(path, "woff2")

`

``

85

`+

})

`

``

86

`+

.len(),

`

``

87

`+

1

`

``

88

`+

);

`

``

89

`+

assert!(!Path::new("all-shared/search-index-xxx.js").exists());

`

``

90

`+

assert!(!Path::new("all-shared/settings.html").exists());

`

``

91

`+

assert!(!Path::new("all-shared/x").exists());

`

``

92

`+

assert!(!Path::new("all-shared/src").exists());

`

``

93

`+

assert!(!Path::new("all-shared/theme.css").exists());

`

``

94

`+

assert_eq!(

`

``

95

`+

shallow_find_files("all-shared/static.files", |path| {

`

``

96

`+

has_prefix(path, "main-") && has_extension(path, "js")

`

``

97

`+

})

`

``

98

`+

.len(),

`

``

99

`+

1

`

``

100

`+

);

`

``

101

`+

assert!(!Path::new("all-shared/y-xxx.css").exists());

`

``

102

`+

}

`