diff --git a/Cargo.toml b/Cargo.toml
index 30b2252..91c57da 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -64,8 +64,6 @@ optional = true
[dev-dependencies]
build-fs-tree = "^0.6.0"
dunce = "^1.0.0"
-# TODO: Try integrating with `speculoos`. If that works well, it will likely
-# replace `expect_macro`.
expect_macro = "^0.2.0"
rstest = "^0.18.0"
tempfile = "^3.8.0"
diff --git a/src/lib.rs b/src/lib.rs
index 2929979..5796ad8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -2222,53 +2222,34 @@ mod tests {
);
}
- #[test]
- fn query_glob_variance() {
- assert!(Glob::new("").unwrap().variance().is_invariant());
- assert!(Glob::new("/a/file.ext").unwrap().variance().is_invariant());
- assert!(Glob::new("/a/{file.ext}")
- .unwrap()
- .variance()
- .is_invariant());
- assert!(Glob::new("{a/b/file.ext}")
- .unwrap()
- .variance()
- .is_invariant());
- assert!(Glob::new("{a,a}").unwrap().variance().is_invariant());
- #[cfg(windows)]
- assert!(Glob::new("{a,A}").unwrap().variance().is_invariant());
- assert!(Glob::new("").unwrap().variance().is_invariant());
- #[cfg(unix)]
- assert!(Glob::new("/[a]/file.ext")
- .unwrap()
- .variance()
- .is_invariant());
- #[cfg(unix)]
- assert!(Glob::new("/[a-a]/file.ext")
- .unwrap()
- .variance()
- .is_invariant());
- #[cfg(unix)]
- assert!(Glob::new("/[a-aaa-a]/file.ext")
- .unwrap()
- .variance()
- .is_invariant());
-
- assert!(Glob::new("/a/{b,c}").unwrap().variance().is_variant());
- assert!(Glob::new("").unwrap().variance().is_variant());
- assert!(Glob::new("/[ab]/file.ext").unwrap().variance().is_variant());
- assert!(Glob::new("**").unwrap().variance().is_variant());
- assert!(Glob::new("/a/*.ext").unwrap().variance().is_variant());
- assert!(Glob::new("/a/b*").unwrap().variance().is_variant());
- #[cfg(unix)]
- assert!(Glob::new("/a/(?i)file.ext")
- .unwrap()
- .variance()
- .is_variant());
- #[cfg(windows)]
- assert!(Glob::new("/a/(?-i)file.ext")
- .unwrap()
- .variance()
- .is_variant());
+ #[rstest]
+ #[case("", true)]
+ #[case("/a/file.ext", true)]
+ #[case("/a/{file.ext}", true)]
+ #[case("/a/b/file.ext", true)]
+ #[case("{a,a}", true)]
+ #[case("", true)]
+ #[case("/a/{b,c}", false)]
+ #[case("", false)]
+ #[case("/[ab]/file.ext", false)]
+ #[case("**", false)]
+ #[case("/a/*.ext", false)]
+ #[case("/a/b*", false)]
+ #[cfg_attr(unix, case("/[a]/file.ext", true))]
+ #[cfg_attr(unix, case("/[a-a]/file.ext", true))]
+ #[cfg_attr(unix, case("/[a-aaa-a]/file.ext", true))]
+ #[cfg_attr(unix, case("/a/(?i)file.ext", false))]
+ #[cfg_attr(windows, case("{a,A}", true))]
+ #[cfg_attr(windows, case("/a/(?-i)file.ext", false))]
+ fn query_glob_variance_is_invariant_eq(#[case] expression: &str, #[case] expected: bool) {
+ let glob = harness::assert_new_glob_is_ok(expression);
+ let is_invariant = glob.variance().is_invariant();
+ assert!(
+ is_invariant == expected,
+ "`Variance::is_invariant` is `{}`, but expected `{}`: in `Glob`: `{}`",
+ is_invariant,
+ expected,
+ glob,
+ );
}
}