From 92fa77d3aa7395f195383bddbbd0dc2b8fc0551c Mon Sep 17 00:00:00 2001 From: Ronny Chevalier Date: Fri, 2 Aug 2024 11:40:51 +0200 Subject: [PATCH] test(lint): add tests for Linter::from_path --- Cargo.lock | 19 +++++++++++++++++++ Cargo.toml | 3 +++ src/lint.rs | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe4d329..7426bcf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -226,6 +226,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + [[package]] name = "gimli" version = "0.29.0" @@ -380,6 +386,7 @@ dependencies = [ "regex", "serde", "serde_regex", + "tempfile", "thiserror", "toml", "tree-sitter", @@ -579,6 +586,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + [[package]] name = "terminal_size" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index 9a21e0d..9025aeb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,3 +88,6 @@ opt-level = 1 lto = true strip = "symbols" panic = "abort" + +[dev-dependencies] +tempfile = "3.10.1" diff --git a/src/lint.rs b/src/lint.rs index 8f7ee31..f28eab8 100644 --- a/src/lint.rs +++ b/src/lint.rs @@ -196,6 +196,13 @@ mod tests { use super::Linter; + #[test] + fn from_path_unknown_extension() { + assert!(Linter::from_path("file.with_unknown_extension") + .unwrap() + .is_none()); + } + #[cfg(feature = "lang-rust")] #[test] fn typo_rust_string() { @@ -205,8 +212,30 @@ mod tests { anyhow::bail!("failed to do something for the following reason : foobar foo"); } "#; - let mut linter = - Linter::new(&Language::rust(), rust.as_bytes().to_vec(), "file.rs").unwrap(); + let mut linter = Linter::new(&Language::rust(), rust, "file.rs").unwrap(); + + let mut typos = linter.iter().collect::>(); + assert_eq!(typos.len(), 1); + let typo = typos.pop().unwrap(); + assert_eq!( + format!("{}", typo.code().unwrap()), + "orthotypos::space-before-punctuation-mark" + ); + assert_eq!(typo.span(), (141, 1).into()); + } + + #[cfg(feature = "lang-rust")] + #[test] + fn typo_rust_from_path() { + let rust = r#" + /// Doc comment + fn func() -> anyhow::Result<()> { + anyhow::bail!("failed to do something for the following reason : foobar foo"); + } + "#; + let file = tempfile::Builder::new().suffix(".rs").tempfile().unwrap(); + std::fs::write(file.path(), rust).unwrap(); + let mut linter = Linter::from_path(file.path()).unwrap().unwrap(); let mut typos = linter.iter().collect::>(); assert_eq!(typos.len(), 1);