package findr import "core:testing" @(test) test_glob_simple :: proc(t: ^testing.T) { result := glob_to_regex("foo", false) defer delete(result) testing.expect_value(t, result, "(^|/)foo(/.*)?$") } @(test) test_glob_anchored :: proc(t: ^testing.T) { result := glob_to_regex("foo", true) defer delete(result) testing.expect_value(t, result, "^foo(/.*)?$") } @(test) test_glob_star :: proc(t: ^testing.T) { result := glob_to_regex("*.log", false) defer delete(result) testing.expect_value(t, result, "(^|/)[^/]*\\.log(/.*)?$") } @(test) test_glob_question :: proc(t: ^testing.T) { result := glob_to_regex("?.log", false) defer delete(result) testing.expect_value(t, result, "(^|/)[^/]\\.log(/.*)?$") } @(test) test_glob_char_class :: proc(t: ^testing.T) { result := glob_to_regex("[abc].log", false) defer delete(result) testing.expect_value(t, result, "(^|/)[abc]\\.log(/.*)?$") } @(test) test_glob_negated_class :: proc(t: ^testing.T) { result := glob_to_regex("[!abc].log", false) defer delete(result) testing.expect_value(t, result, "(^|/)[^abc]\\.log(/.*)?$") } @(test) test_glob_dot_escaped :: proc(t: ^testing.T) { result := glob_to_regex(".env", false) defer delete(result) testing.expect_value(t, result, "(^|/)\\.env(/.*)?$") } @(test) test_glob_globstar_prefix :: proc(t: ^testing.T) { result := glob_to_regex("**/foo", false) defer delete(result) testing.expect_value(t, result, "(^|/)(.*/)?foo(/.*)?$") } @(test) test_glob_globstar_suffix :: proc(t: ^testing.T) { result := glob_to_regex("abc/**", false) defer delete(result) testing.expect_value(t, result, "(^|/)abc/.*(/.*)?$") } @(test) test_glob_globstar_middle :: proc(t: ^testing.T) { result := glob_to_regex("foo/**/bar", false) defer delete(result) testing.expect_value(t, result, "(^|/)foo/(.*/)?bar(/.*)?$") } @(test) test_glob_backslash_escape :: proc(t: ^testing.T) { result := glob_to_regex("\\!foo", false) defer delete(result) testing.expect_value(t, result, "(^|/)!foo(/.*)?$") } @(test) test_glob_empty :: proc(t: ^testing.T) { result := glob_to_regex("", false) defer delete(result) testing.expect_value(t, result, "(^|/)(/.*)?$") } @(test) test_is_ignored_basic :: proc(t: ^testing.T) { gi := parse("*.env\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, ".env", false), true) testing.expect_value(t, is_ignored(&gi, "foo.env", false), true) testing.expect_value(t, is_ignored(&gi, ".env.local", false), false) testing.expect_value(t, is_ignored(&gi, "config.yaml", false), false) } @(test) test_is_ignored_negation :: proc(t: ^testing.T) { gi := parse("*.env\n!.env.production\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, ".env", false), true) testing.expect_value(t, is_ignored(&gi, ".env.production", false), false) } @(test) test_is_ignored_dir_only :: proc(t: ^testing.T) { gi := parse("node_modules/\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, "node_modules", true), true) testing.expect_value(t, is_ignored(&gi, "node_modules", false), false) } @(test) test_is_ignored_anchored :: proc(t: ^testing.T) { gi := parse("/secret.key\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, "secret.key", false), true) } @(test) test_is_ignored_comments_skipped :: proc(t: ^testing.T) { gi := parse("# this is a comment\n#another\n*.tmp\n") defer destroy(&gi) testing.expect_value(t, len(gi.rules), 1) testing.expect_value(t, is_ignored(&gi, "file.tmp", false), true) } @(test) test_is_ignored_blank_lines_skipped :: proc(t: ^testing.T) { gi := parse("\n\n \n*.log\n\n") defer destroy(&gi) testing.expect_value(t, len(gi.rules), 1) } @(test) test_is_ignored_last_match_wins :: proc(t: ^testing.T) { gi := parse("*.env\n!*.env\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, ".env", false), false) } @(test) test_is_ignored_no_rules :: proc(t: ^testing.T) { gi := parse("") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, "anything", false), false) } @(test) test_is_ignored_env_pattern :: proc(t: ^testing.T) { gi := parse(".env*\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, ".env", false), true) testing.expect_value(t, is_ignored(&gi, ".env.local", false), true) testing.expect_value(t, is_ignored(&gi, ".envrc", false), true) } @(test) test_is_ignored_globstar :: proc(t: ^testing.T) { gi := parse("**/cache\n") defer destroy(&gi) testing.expect_value(t, is_ignored(&gi, "cache", false), true) testing.expect_value(t, is_ignored(&gi, "foo/cache", false), true) testing.expect_value(t, is_ignored(&gi, "foo/bar/cache", false), true) }