1package glob
2
3import "testing"
4
5func TestMatch(t *testing.T) {
6 tests := []struct {
7 pattern string
8 name string
9 want bool
10 }{
11 {"internal/domain/**", "internal/domain/user.go", true},
12 {"internal/domain/**", "internal/domain/entity/user.go", true},
13 {"internal/domain/**", "internal/domain", true},
14 {"cmd/**", "cmd/hexcheck/main.go", true},
15 {"cmd/**", "internal/cmd/main.go", false},
16 {"internal/*/port/**", "internal/application/port/user.go", true},
17 {"internal/*/port/**", "internal/application/usecase/user.go", false},
18 {"internal/foo_test.go", "internal/foo_test.go", true},
19 {"**/mocks/**", "mocks/m.go", true},
20 {"**/mocks/**", "internal/a/b/mocks/m.go", true},
21 {"**/mocks/**", "internal/mocksy/m.go", false},
22 {"internal/**/repo.go", "internal/repo.go", true},
23 {"internal/**/repo.go", "internal/a/b/repo.go", true},
24 {"internal/**/repo.go", "internal/a/b/other.go", false},
25 {"**/*_gen.go", "a/b/x_gen.go", true},
26 {"internal/[ab]*/**", "internal/adapters/x.go", true},
27 {"internal/[ab]*/**", "internal/core/x.go", false},
28 {"internal/[/**", "internal/x.go", false},
29 {"./internal/**/", "internal/x.go", true},
30 {`internal\domain\**`, `internal\domain\user.go`, true},
31 {"", "", true},
32 {"", "x", false},
33 {"internal", "internal/x.go", false},
34 }
35 for _, tt := range tests {
36 t.Run(tt.pattern+"|"+tt.name, func(t *testing.T) {
37 if got := Match(tt.pattern, tt.name); got != tt.want {
38 t.Fatalf("Match(%q, %q) = %v, want %v", tt.pattern, tt.name, got, tt.want)
39 }
40 })
41 }
42}
43
44func TestSpecificity(t *testing.T) {
45 tests := []struct {
46 pattern string
47 want int
48 }{
49 {"internal/domain/**", len("internal/domain/")},
50 {"internal/domain/user.go", len("internal/domain/user.go")},
51 {"**/mocks/**", 0},
52 {"./cmd/[ab]", len("cmd/")},
53 }
54 for _, tt := range tests {
55 t.Run(tt.pattern, func(t *testing.T) {
56 if got := Specificity(tt.pattern); got != tt.want {
57 t.Fatalf("Specificity(%q) = %d, want %d", tt.pattern, got, tt.want)
58 }
59 })
60 }
61}