summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/src/test/mod_resolver.rs
blob: aacb2acc684986b3d6b0ceae263a19468a22b99e (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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
use std::io;
use std::path::PathBuf;

use super::read_config;

use crate::{FileName, Input, Session};

fn verify_mod_resolution(input_file_name: &str, exp_misformatted_files: &[&str]) {
    let input_file = PathBuf::from(input_file_name);
    let config = read_config(&input_file);
    let mut session = Session::<io::Stdout>::new(config, None);
    let report = session
        .format(Input::File(input_file_name.into()))
        .expect("Should not have had any execution errors");
    let errors_by_file = &report.internal.borrow().0;
    for exp_file in exp_misformatted_files {
        assert!(errors_by_file.contains_key(&FileName::Real(PathBuf::from(exp_file))));
    }
}

#[test]
fn nested_out_of_line_mods_loaded() {
    // See also https://github.com/rust-lang/rustfmt/issues/4874
    verify_mod_resolution(
        "tests/mod-resolver/issue-4874/main.rs",
        &[
            "tests/mod-resolver/issue-4874/bar/baz.rs",
            "tests/mod-resolver/issue-4874/foo/qux.rs",
        ],
    );
}

#[test]
fn out_of_line_nested_inline_within_out_of_line() {
    // See also https://github.com/rust-lang/rustfmt/issues/5063
    verify_mod_resolution(
        "tests/mod-resolver/issue-5063/main.rs",
        &[
            "tests/mod-resolver/issue-5063/foo/bar/baz.rs",
            "tests/mod-resolver/issue-5063/foo.rs",
        ],
    );
}

#[test]
fn skip_out_of_line_nested_inline_within_out_of_line() {
    // See also https://github.com/rust-lang/rustfmt/issues/5065
    verify_mod_resolution(
        "tests/mod-resolver/skip-files-issue-5065/main.rs",
        &["tests/mod-resolver/skip-files-issue-5065/one.rs"],
    );
}

#[test]
fn fmt_out_of_line_test_modules() {
    // See also https://github.com/rust-lang/rustfmt/issues/5119
    verify_mod_resolution(
        "tests/mod-resolver/test-submodule-issue-5119/tests/test1.rs",
        &[
            "tests/mod-resolver/test-submodule-issue-5119/tests/test1.rs",
            "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub1.rs",
            "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub2.rs",
            "tests/mod-resolver/test-submodule-issue-5119/tests/test1/sub3/sub4.rs",
        ],
    )
}

#[test]
fn fallback_and_try_to_resolve_external_submod_relative_to_current_dir_path() {
    // See also https://github.com/rust-lang/rustfmt/issues/5198
    verify_mod_resolution(
        "tests/mod-resolver/issue-5198/lib.rs",
        &[
            "tests/mod-resolver/issue-5198/a.rs",
            "tests/mod-resolver/issue-5198/lib/b.rs",
            "tests/mod-resolver/issue-5198/lib/c/mod.rs",
            "tests/mod-resolver/issue-5198/lib/c/e.rs",
            "tests/mod-resolver/issue-5198/lib/c/d/f.rs",
            "tests/mod-resolver/issue-5198/lib/c/d/g/mod.rs",
        ],
    )
}