diff --git a/Cargo.lock b/Cargo.lock index aebda587ec..ac4e6b5cca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,6 +147,15 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + [[package]] name = "bstr" version = "0.2.17" @@ -427,6 +436,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.3.2" @@ -521,6 +539,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "cxx" version = "1.0.85" @@ -577,6 +605,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "directories" version = "4.0.1" @@ -770,6 +808,16 @@ dependencies = [ "libc", ] +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.8" @@ -948,6 +996,8 @@ dependencies = [ "console", "lazy_static", "linked-hash-map", + "pest", + "pest_derive", "serde", "similar", "yaml-rust", @@ -1475,6 +1525,50 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "pest" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "petgraph" version = "0.6.2" @@ -2219,6 +2313,17 @@ dependencies = [ "serde", ] +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shellexpand" version = "3.0.0" @@ -2550,6 +2655,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" + [[package]] name = "unic-char-property" version = "0.9.0" diff --git a/Cargo.toml b/Cargo.toml index 48bb819f52..1ca7c62300 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,7 +77,7 @@ wasm-bindgen = { version = "0.2.83" } is_executable = "1.0.1" [dev-dependencies] -insta = { version = "1.19.1", features = ["yaml"] } +insta = { version = "1.19.1", features = ["yaml", "redactions"] } test-case = { version = "2.2.2" } wasm-bindgen-test = { version = "0.3.33" } diff --git a/scripts/add_plugin.py b/scripts/add_plugin.py index d83a29d863..e02d5a7b68 100755 --- a/scripts/add_plugin.py +++ b/scripts/add_plugin.py @@ -40,7 +40,7 @@ mod tests { use crate::registry::Rule; use crate::linter::test_path; - use crate::settings; + use crate::{assert_yaml_snapshot, settings}; fn rules(rule_code: Rule, path: &Path) -> Result<()> { let snapshot = format!("{}_{}", rule_code.as_ref(), path.to_string_lossy()); @@ -50,7 +50,7 @@ mod tests { .as_path(), &settings::Settings::for_rule(rule_code), )?; - insta::assert_yaml_snapshot!(snapshot, diagnostics); + assert_yaml_snapshot!(snapshot, diagnostics); Ok(()) } } diff --git a/src/assert_yaml_snapshot.rs b/src/assert_yaml_snapshot.rs new file mode 100644 index 0000000000..ec2cf539e5 --- /dev/null +++ b/src/assert_yaml_snapshot.rs @@ -0,0 +1,18 @@ +/// Platform-independent snapshot assertion +#[macro_export] +macro_rules! assert_yaml_snapshot { + ( $($args: expr),+) => { + let line_sep = if cfg!(windows) { "\r\n" } else { "\n" }; + + // adjust snapshot file for platform + let mut settings = insta::Settings::clone_current(); + settings.add_redaction("[].fix.content", insta::dynamic_redaction(move |value, _path| { + insta::internals::Content::Seq( + value.as_str().unwrap().split(line_sep).map(|line| line.into()).collect() + ) + })); + settings.bind(|| { + insta::assert_yaml_snapshot!($($args),+); + }); + }; +} diff --git a/src/lib.rs b/src/lib.rs index 547605ba57..7bc8f74cb6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,6 +19,7 @@ clippy::too_many_lines )] +mod assert_yaml_snapshot; mod ast; mod autofix; pub mod cache;