Skip to content

Commit

Permalink
Migrate query_glob_variance.
Browse files Browse the repository at this point in the history
  • Loading branch information
olson-sean-k committed Feb 29, 2024
1 parent bde0047 commit 2ea11e9
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 50 deletions.
2 changes: 0 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
77 changes: 29 additions & 48 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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("<a/b:2>").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("<a/b:1,>").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("<a/b:2>", true)]
#[case("/a/{b,c}", false)]
#[case("<a/b:1,>", 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,
);
}
}

0 comments on commit 2ea11e9

Please sign in to comment.