From 05bc4dc29f0eb2174749a02164089dc158e5e321 Mon Sep 17 00:00:00 2001 From: aaronberger Date: Thu, 22 Aug 2024 10:54:08 -0700 Subject: [PATCH 1/3] add UTs to cover difference in /* and /** --- src/tests/glob.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/tests/glob.rs b/src/tests/glob.rs index be7059c..3938089 100644 --- a/src/tests/glob.rs +++ b/src/tests/glob.rs @@ -44,6 +44,24 @@ fn path() { ); } +#[test] +fn root_star() { + test( + "/*", + ["/foo.txt", "/bar.xml", "/baz.json"], + ["/bar/foo/baz.txt", "/baz/bar/foo.xml", "/bar/foo.txt"], + ); +} + +#[test] +fn root_double_star() { + test( + "/**", + ["/foo.txt", "/bar.xml", "/baz.json","/bar/foo/baz.txt", "/baz/bar/foo.xml", "/bar/foo.txt"], + [], + ); +} + #[test] fn star() { test("*", ["/*", "/a"], []); From 63bcd47256b60230c588061b1e6825c76cc847cd Mon Sep 17 00:00:00 2001 From: aaronberger Date: Thu, 22 Aug 2024 14:30:31 -0700 Subject: [PATCH 2/3] simplify found_Sep condition to avoid situations where '/' at beginning isn't misssed --- src/glob/parser/main.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/glob/parser/main.rs b/src/glob/parser/main.rs index 6caeb45..96aa50f 100644 --- a/src/glob/parser/main.rs +++ b/src/glob/parser/main.rs @@ -4,10 +4,8 @@ use crate::glob::{Glob, Matcher}; pub fn parse(glob: &str) -> Glob { let mut retval = Glob(vec![]); let mut stack = AltStack::new(); - let mut found_sep: bool = false; for segment in glob.split('/') { retval.append_char('/'); - found_sep = retval.0.len() > 1; let mut chars = segment.chars().peekable(); while let Some(c) = chars.next() { match c { @@ -64,7 +62,7 @@ pub fn parse(glob: &str) -> Glob { break; } } - if found_sep { + if glob.contains("/") { *retval.0.first_mut().unwrap() = Matcher::End; } if let Some(Matcher::Sep) = retval.0.last() { From aee8684a514af5902188f885ffe4467376604726 Mon Sep 17 00:00:00 2001 From: aaronberger Date: Mon, 26 Aug 2024 09:17:49 -0700 Subject: [PATCH 3/3] cargo fmt --- src/tests/glob.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/tests/glob.rs b/src/tests/glob.rs index 3938089..2f9f6a8 100644 --- a/src/tests/glob.rs +++ b/src/tests/glob.rs @@ -57,7 +57,14 @@ fn root_star() { fn root_double_star() { test( "/**", - ["/foo.txt", "/bar.xml", "/baz.json","/bar/foo/baz.txt", "/baz/bar/foo.xml", "/bar/foo.txt"], + [ + "/foo.txt", + "/bar.xml", + "/baz.json", + "/bar/foo/baz.txt", + "/baz/bar/foo.xml", + "/bar/foo.txt", + ], [], ); }