From 931fd92e9feeaafc67c9d1ddbf52a12044b0dc4b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 6 Oct 2025 14:14:08 -0500 Subject: [PATCH] test(config): Make asserts more informative --- Cargo.lock | 2 ++ crates/typos-cli/Cargo.toml | 2 +- crates/typos-cli/src/config.rs | 36 +++++++++++++++++++++++----------- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c55293d0..2857f160 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1314,6 +1314,8 @@ dependencies = [ "libc", "normalize-line-endings", "os_pipe", + "serde", + "serde_json", "similar", "snapbox-macros", "tempfile", diff --git a/crates/typos-cli/Cargo.toml b/crates/typos-cli/Cargo.toml index 7dca7896..7fc19805 100644 --- a/crates/typos-cli/Cargo.toml +++ b/crates/typos-cli/Cargo.toml @@ -84,7 +84,7 @@ supports-unicode = "3.0.0" assert_fs = "1.1" divan = "0.1.21" maplit = "1.0" -snapbox = "0.6.21" +snapbox = { version = "0.6.21", features = ["json"] } trycmd = "0.15.10" [[bench]] diff --git a/crates/typos-cli/src/config.rs b/crates/typos-cli/src/config.rs index 1be1ade5..4d3e8bfc 100644 --- a/crates/typos-cli/src/config.rs +++ b/crates/typos-cli/src/config.rs @@ -655,6 +655,8 @@ fn hashmap_string_t( #[cfg(test)] mod test { use super::*; + use snapbox::assert_data_eq; + use snapbox::prelude::*; #[cfg(feature = "unstable-schema")] #[test] @@ -668,11 +670,23 @@ mod test { fn test_from_defaults() { let null = Config::default(); let defaulted = Config::from_defaults(); - assert_ne!(defaulted, null); - assert_ne!(defaulted.files, null.files); - assert_ne!(defaulted.default, null.default); - assert_ne!(defaulted.default.tokenizer, null.default.tokenizer); - assert_ne!(defaulted.default.dict, null.default.dict); + assert_ne!(defaulted.clone().into_json(), null.clone().into_json()); + assert_ne!( + defaulted.files.clone().into_json(), + null.files.clone().into_json() + ); + assert_ne!( + defaulted.default.clone().into_json(), + null.default.clone().into_json() + ); + assert_ne!( + defaulted.default.tokenizer.clone().into_json(), + null.default.tokenizer.clone().into_json() + ); + assert_ne!( + defaulted.default.dict.clone().into_json(), + null.default.dict.clone().into_json() + ); } #[test] @@ -683,7 +697,7 @@ mod test { let mut actual = defaulted.clone(); actual.update(&null); - assert_eq!(actual, defaulted); + assert_data_eq!(actual.into_json(), defaulted.into_json()); } #[test] @@ -694,7 +708,7 @@ mod test { let mut actual = null; actual.update(&defaulted); - assert_eq!(actual, defaulted); + assert_data_eq!(actual.into_json(), defaulted.into_json()); } #[test] @@ -708,7 +722,7 @@ mod test { let mut actual = null; actual.update(&extended); - assert_eq!(actual, extended); + assert_data_eq!(actual.into_json(), extended.into_json()); } #[test] @@ -726,7 +740,7 @@ mod test { actual.update(&extended); let expected: Vec = vec!["*.foo".into(), "*.bar".into()]; - assert_eq!(actual.extend_glob, expected); + assert_data_eq!(actual.extend_glob.into_json(), expected.into_json()); } #[test] @@ -749,7 +763,7 @@ check-file = true }, ); let actual = Config::from_toml(input).unwrap(); - assert_eq!(actual, expected); + assert_data_eq!(actual.into_json(), expected.into_json()); } #[test] @@ -781,6 +795,6 @@ inout = "inout" }, ); let actual = Config::from_toml(input).unwrap(); - assert_eq!(actual, expected); + assert_data_eq!(actual.into_json(), expected.into_json()); } }