From 84a8b628b8a3b6aa8035c9f49b38392556aea32c Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 31 Jan 2023 17:35:30 -0500 Subject: [PATCH] Avoid implicit-namespace-package checks for .pyi files (#2420) --- .../test_pass_pyi/example.pyi | 0 src/rules/flake8_no_pep420/mod.rs | 21 ++++++++++--------- src/rules/flake8_no_pep420/rules.rs | 2 +- ...lake8_no_pep420__tests__test_pass_pyi.snap | 6 ++++++ 4 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 resources/test/fixtures/flake8_no_pep420/test_pass_pyi/example.pyi create mode 100644 src/rules/flake8_no_pep420/snapshots/ruff__rules__flake8_no_pep420__tests__test_pass_pyi.snap diff --git a/resources/test/fixtures/flake8_no_pep420/test_pass_pyi/example.pyi b/resources/test/fixtures/flake8_no_pep420/test_pass_pyi/example.pyi new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/src/rules/flake8_no_pep420/mod.rs b/src/rules/flake8_no_pep420/mod.rs index 04d38aeff3e5b2..e9505a660d107c 100644 --- a/src/rules/flake8_no_pep420/mod.rs +++ b/src/rules/flake8_no_pep420/mod.rs @@ -13,18 +13,19 @@ mod tests { use crate::registry::Rule; use crate::settings::Settings; - #[test_case(Path::new("test_pass_init"); "INP001_0")] - #[test_case(Path::new("test_fail_empty"); "INP001_1")] - #[test_case(Path::new("test_fail_nonempty"); "INP001_2")] - #[test_case(Path::new("test_fail_shebang"); "INP001_3")] - #[test_case(Path::new("test_ignored"); "INP001_4")] - #[test_case(Path::new("test_pass_namespace_package"); "INP001_5")] - fn test_flake8_no_pep420(path: &Path) -> Result<()> { + #[test_case(Path::new("test_pass_init"), Path::new("example.py"); "INP001_0")] + #[test_case(Path::new("test_fail_empty"), Path::new("example.py"); "INP001_1")] + #[test_case(Path::new("test_fail_nonempty"), Path::new("example.py"); "INP001_2")] + #[test_case(Path::new("test_fail_shebang"), Path::new("example.py"); "INP001_3")] + #[test_case(Path::new("test_ignored"), Path::new("example.py"); "INP001_4")] + #[test_case(Path::new("test_pass_namespace_package"), Path::new("example.py"); "INP001_5")] + #[test_case(Path::new("test_pass_pyi"), Path::new("example.pyi"); "INP001_6")] + fn test_flake8_no_pep420(path: &Path, filename: &Path) -> Result<()> { let snapshot = format!("{}", path.to_string_lossy()); - // Platform-independent paths let p = PathBuf::from(format!( - "./resources/test/fixtures/flake8_no_pep420/{}/example.py", - path.display() + "./resources/test/fixtures/flake8_no_pep420/{}/{}", + path.display(), + filename.display() )); let diagnostics = test_path( p.as_path(), diff --git a/src/rules/flake8_no_pep420/rules.rs b/src/rules/flake8_no_pep420/rules.rs index 07d1fe9ba53f8d..7791e4a09d0ed0 100644 --- a/src/rules/flake8_no_pep420/rules.rs +++ b/src/rules/flake8_no_pep420/rules.rs @@ -20,7 +20,7 @@ impl Violation for ImplicitNamespacePackage { /// INP001 pub fn implicit_namespace_package(path: &Path, package: Option<&Path>) -> Option { - if package.is_none() { + if package.is_none() && path.extension().map_or(true, |ext| ext != "pyi") { Some(Diagnostic::new( ImplicitNamespacePackage(fs::relativize_path(path)), Range::default(), diff --git a/src/rules/flake8_no_pep420/snapshots/ruff__rules__flake8_no_pep420__tests__test_pass_pyi.snap b/src/rules/flake8_no_pep420/snapshots/ruff__rules__flake8_no_pep420__tests__test_pass_pyi.snap new file mode 100644 index 00000000000000..622ebcff04079e --- /dev/null +++ b/src/rules/flake8_no_pep420/snapshots/ruff__rules__flake8_no_pep420__tests__test_pass_pyi.snap @@ -0,0 +1,6 @@ +--- +source: src/rules/flake8_no_pep420/mod.rs +expression: diagnostics +--- +[] +