fix: logic/correctness bugs — issues #73, #68, #67, #66, #59, #58, #54, #48, #53
CI / lint (pull_request) Successful in 8s
CI / sanitizers (address) (pull_request) Successful in 14s
CI / sanitizers (undefined) (pull_request) Successful in 13s
CI / fuzz-build (pull_request) Successful in 13s
CI / coverage (pull_request) Successful in 9s
CI / build-and-test (pull_request) Failing after 59s
CI / valgrind (pull_request) Successful in 11s

This commit is contained in:
2026-07-20 19:04:35 +02:00
parent 6b8979a040
commit 96c4a1ac47
9 changed files with 159 additions and 55 deletions
+31
View File
@@ -49,6 +49,33 @@ static void test_glob_question_star() {
EXPECT_TRUE(glob_match("?*.txt", "a.txt"));
}
static void test_glob_doublestar_match_all() {
EXPECT_TRUE(glob_match("**", "anything"));
EXPECT_TRUE(glob_match("**", "path/to/file"));
}
static void test_glob_doublestar_prefix() {
EXPECT_TRUE(glob_match("**/foo", "foo"));
EXPECT_TRUE(glob_match("**/foo", "bar/foo"));
EXPECT_TRUE(glob_match("**/foo", "a/b/c/foo"));
EXPECT_FALSE(glob_match("**/foo", "foobar"));
EXPECT_FALSE(glob_match("**/foo", "bar/foobar"));
}
static void test_glob_doublestar_suffix() {
EXPECT_TRUE(glob_match("foo/**", "foo"));
EXPECT_TRUE(glob_match("foo/**", "foo/bar"));
EXPECT_TRUE(glob_match("foo/**", "foo/bar/baz"));
EXPECT_FALSE(glob_match("foo/**", "foobar"));
}
static void test_glob_doublestar_mid() {
EXPECT_TRUE(glob_match("a/**/b", "a/b"));
EXPECT_TRUE(glob_match("a/**/b", "a/x/b"));
EXPECT_TRUE(glob_match("a/**/b", "a/x/y/z/b"));
EXPECT_FALSE(glob_match("a/**/b", "a/x/bad"));
}
void test_glob() {
test_glob_exact_match();
test_glob_question_mark();
@@ -60,4 +87,8 @@ void test_glob() {
test_glob_slash_not_matched();
test_glob_complex();
test_glob_question_star();
test_glob_doublestar_match_all();
test_glob_doublestar_prefix();
test_glob_doublestar_suffix();
test_glob_doublestar_mid();
}