]> git.lizzy.rs Git - rust.git/blob - src/tools/rustfmt/src/test/mod_resolver.rs
Auto merge of #97235 - nbdd0121:unwind, r=Amanieu
[rust.git] / src / tools / rustfmt / src / test / mod_resolver.rs
1 use std::io;
2 use std::path::PathBuf;
3
4 use super::read_config;
5
6 use crate::{FileName, Input, Session};
7
8 fn verify_mod_resolution(input_file_name: &str, exp_misformatted_files: &[&str]) {
9     let input_file = PathBuf::from(input_file_name);
10     let config = read_config(&input_file);
11     let mut session = Session::<io::Stdout>::new(config, None);
12     let report = session
13         .format(Input::File(input_file_name.into()))
14         .expect("Should not have had any execution errors");
15     let errors_by_file = &report.internal.borrow().0;
16     for exp_file in exp_misformatted_files {
17         assert!(errors_by_file.contains_key(&FileName::Real(PathBuf::from(exp_file))));
18     }
19 }
20
21 #[test]
22 fn nested_out_of_line_mods_loaded() {
23     // See also https://github.com/rust-lang/rustfmt/issues/4874
24     verify_mod_resolution(
25         "tests/mod-resolver/issue-4874/main.rs",
26         &[
27             "tests/mod-resolver/issue-4874/bar/baz.rs",
28             "tests/mod-resolver/issue-4874/foo/qux.rs",
29         ],
30     );
31 }
32
33 #[test]
34 fn out_of_line_nested_inline_within_out_of_line() {
35     // See also https://github.com/rust-lang/rustfmt/issues/5063
36     verify_mod_resolution(
37         "tests/mod-resolver/issue-5063/main.rs",
38         &[
39             "tests/mod-resolver/issue-5063/foo/bar/baz.rs",
40             "tests/mod-resolver/issue-5063/foo.rs",
41         ],
42     );
43 }
44
45 #[test]
46 fn skip_out_of_line_nested_inline_within_out_of_line() {
47     // See also https://github.com/rust-lang/rustfmt/issues/5065
48     verify_mod_resolution(
49         "tests/mod-resolver/skip-files-issue-5065/main.rs",
50         &["tests/mod-resolver/skip-files-issue-5065/one.rs"],
51     );
52 }
53
54 #[test]
55 fn fmt_out_of_line_test_modules() {
56     // See also https://github.com/rust-lang/rustfmt/issues/5119
57     verify_mod_resolution(
58         "tests/mod-resolver/test-submodule-issue-5119/tests/test1.rs",
59         &[
60             "tests/mod-resolver/test-submodule-issue-5119/tests/test1.rs",
61             "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub1.rs",
62             "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub2.rs",
63             "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub3/sub4.rs",
64         ],
65     )
66 }
67
68 #[test]
69 fn fallback_and_try_to_resolve_external_submod_relative_to_current_dir_path() {
70     // See also https://github.com/rust-lang/rustfmt/issues/5198
71     verify_mod_resolution(
72         "tests/mod-resolver/issue-5198/lib.rs",
73         &[
74             "tests/mod-resolver/issue-5198/a.rs",
75             "tests/mod-resolver/issue-5198/lib/b.rs",
76             "tests/mod-resolver/issue-5198/lib/c/mod.rs",
77             "tests/mod-resolver/issue-5198/lib/c/e.rs",
78             "tests/mod-resolver/issue-5198/lib/c/d/f.rs",
79             "tests/mod-resolver/issue-5198/lib/c/d/g/mod.rs",
80         ],
81     )
82 }