mirror of https://github.com/astral-sh/ruff
Add a unit test for python-file-like directory exclusion (#5997)
This commit is contained in:
parent
51ebff7e41
commit
2b9c22de0f
|
|
@ -431,18 +431,22 @@ fn is_file_excluded(
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use std::fs::{create_dir, File};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use globset::GlobSet;
|
use globset::GlobSet;
|
||||||
|
use itertools::Itertools;
|
||||||
use path_absolutize::Absolutize;
|
use path_absolutize::Absolutize;
|
||||||
|
use tempfile::TempDir;
|
||||||
|
|
||||||
use crate::resolver::{
|
use crate::resolver::{
|
||||||
is_file_excluded, match_exclusion, resolve_settings_with_processor, NoOpProcessor,
|
is_file_excluded, match_exclusion, python_files_in_path, resolve_settings_with_processor,
|
||||||
PyprojectConfig, PyprojectDiscoveryStrategy, Relativity, Resolver,
|
NoOpProcessor, PyprojectConfig, PyprojectDiscoveryStrategy, Relativity, Resolver,
|
||||||
};
|
};
|
||||||
use crate::settings::pyproject::find_settings_toml;
|
use crate::settings::pyproject::find_settings_toml;
|
||||||
use crate::settings::types::FilePattern;
|
use crate::settings::types::FilePattern;
|
||||||
|
use crate::settings::AllSettings;
|
||||||
use crate::test::test_resource_path;
|
use crate::test::test_resource_path;
|
||||||
|
|
||||||
fn make_exclusion(file_pattern: FilePattern) -> GlobSet {
|
fn make_exclusion(file_pattern: FilePattern) -> GlobSet {
|
||||||
|
|
@ -606,4 +610,43 @@ mod tests {
|
||||||
));
|
));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn find_python_files() -> Result<()> {
|
||||||
|
// Initialize the filesystem:
|
||||||
|
// root
|
||||||
|
// ├── file1.py
|
||||||
|
// ├── dir1.py
|
||||||
|
// │ └── file2.py
|
||||||
|
// └── dir2.py
|
||||||
|
let tmp_dir = TempDir::new()?;
|
||||||
|
let root = tmp_dir.path();
|
||||||
|
let file1 = root.join("file1.py");
|
||||||
|
let dir1 = root.join("dir1.py");
|
||||||
|
let file2 = dir1.join("file2.py");
|
||||||
|
let dir2 = root.join("dir2.py");
|
||||||
|
File::create(&file1)?;
|
||||||
|
create_dir(dir1)?;
|
||||||
|
File::create(&file2)?;
|
||||||
|
create_dir(dir2)?;
|
||||||
|
|
||||||
|
let (paths, _) = python_files_in_path(
|
||||||
|
&[root.to_path_buf()],
|
||||||
|
&PyprojectConfig::new(
|
||||||
|
PyprojectDiscoveryStrategy::Fixed,
|
||||||
|
AllSettings::default(),
|
||||||
|
None,
|
||||||
|
),
|
||||||
|
&NoOpProcessor,
|
||||||
|
)?;
|
||||||
|
let paths = paths
|
||||||
|
.iter()
|
||||||
|
.flatten()
|
||||||
|
.map(ignore::DirEntry::path)
|
||||||
|
.sorted()
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
assert_eq!(paths, &[file2, file1]);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue