mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 12:29:28 +00:00

Closes https://github.com/astral-sh/ruff/issues/7347 Closes #3970 via use of `include` We could update examples in our documentation, but I worry since we do not have versioned documentation users on older versions would be confused. Instead, I'll open an issue to track updating use of `ruff check .` in the documentation sometime in the future.
101 lines
3.1 KiB
Rust
101 lines
3.1 KiB
Rust
#![cfg(not(target_family = "wasm"))]
|
|
|
|
use std::path::Path;
|
|
use std::process::Command;
|
|
use std::str;
|
|
|
|
use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
|
|
const BIN_NAME: &str = "ruff";
|
|
|
|
#[cfg(not(target_os = "windows"))]
|
|
const TEST_FILTERS: &[(&str, &str)] = &[(".*/resources/test/fixtures/", "[BASEPATH]/")];
|
|
#[cfg(target_os = "windows")]
|
|
const TEST_FILTERS: &[(&str, &str)] = &[
|
|
(r".*\\resources\\test\\fixtures\\", "[BASEPATH]\\"),
|
|
(r"\\", "/"),
|
|
];
|
|
|
|
#[test]
|
|
fn check_project_include_defaults() {
|
|
// Defaults to checking the current working directory
|
|
//
|
|
// The test directory includes:
|
|
// - A pyproject.toml which specifies an include
|
|
// - A nested pyproject.toml which has a Ruff section
|
|
//
|
|
// The nested project should all be checked instead of respecting the parent includes
|
|
|
|
insta::with_settings!({
|
|
filters => TEST_FILTERS.to_vec()
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.args(["check", "--show-files"]).current_dir(Path::new("./resources/test/fixtures/include-test")), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
[BASEPATH]/include-test/a.py
|
|
[BASEPATH]/include-test/nested-project/e.py
|
|
[BASEPATH]/include-test/nested-project/pyproject.toml
|
|
[BASEPATH]/include-test/subdirectory/c.py
|
|
|
|
----- stderr -----
|
|
"###);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn check_project_respects_direct_paths() {
|
|
// Given a direct path not included in the project `includes`, it should be checked
|
|
|
|
insta::with_settings!({
|
|
filters => TEST_FILTERS.to_vec()
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.args(["check", "--show-files", "b.py"]).current_dir(Path::new("./resources/test/fixtures/include-test")), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
[BASEPATH]/include-test/b.py
|
|
|
|
----- stderr -----
|
|
"###);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn check_project_respects_subdirectory_includes() {
|
|
// Given a direct path to a subdirectory, the include should be respected
|
|
|
|
insta::with_settings!({
|
|
filters => TEST_FILTERS.to_vec()
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.args(["check", "--show-files", "subdirectory"]).current_dir(Path::new("./resources/test/fixtures/include-test")), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
[BASEPATH]/include-test/subdirectory/c.py
|
|
|
|
----- stderr -----
|
|
"###);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn check_project_from_project_subdirectory_respects_includes() {
|
|
// Run from a project subdirectory, the include specified in the parent directory should be respected
|
|
|
|
insta::with_settings!({
|
|
filters => TEST_FILTERS.to_vec()
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.args(["check", "--show-files"]).current_dir(Path::new("./resources/test/fixtures/include-test/subdirectory")), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
[BASEPATH]/include-test/subdirectory/c.py
|
|
|
|
----- stderr -----
|
|
"###);
|
|
});
|
|
}
|