github.com/posener/gitfs@v1.2.2-0.20200410105819-ea4e48d73ab9/internal/glob/glob_test.go (about) 1 package glob 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestMatch(t *testing.T) { 11 t.Parallel() 12 tests := []struct { 13 pattern []string 14 name string 15 isDir bool 16 }{ 17 // No pattern should match anything. 18 {name: "foo"}, 19 {pattern: []string{"foo"}, name: "foo"}, 20 {pattern: []string{"*"}, name: "foo"}, 21 {pattern: []string{"foo"}, name: "./foo"}, 22 {pattern: []string{"foo"}, name: "foo/"}, 23 {pattern: []string{"foo"}, name: "./foo/"}, 24 {pattern: []string{"foo", "bar"}, name: "foo"}, 25 {pattern: []string{"bar", "foo"}, name: "foo"}, 26 {pattern: []string{"*/*"}, name: "foo/bar"}, 27 {pattern: []string{"*/*"}, name: "./foo/bar"}, 28 {pattern: []string{"*/*"}, name: "foo/bar/"}, 29 {pattern: []string{"*/*"}, name: "./foo/bar/"}, 30 {pattern: []string{"*/*"}, name: "foo", isDir: true}, 31 {pattern: []string{"*"}, name: "foo", isDir: true}, 32 {pattern: []string{"foo"}, name: "foo", isDir: true}, 33 } 34 35 for _, tt := range tests { 36 p, err := New(tt.pattern...) 37 require.NoError(t, err) 38 assert.True(t, p.Match(tt.name, tt.isDir)) 39 } 40 } 41 42 func TestMatch_noMatch(t *testing.T) { 43 t.Parallel() 44 tests := []struct { 45 pattern []string 46 name string 47 isDir bool 48 }{ 49 {pattern: []string{"f"}, name: "foo"}, 50 {pattern: []string{"f", "bar"}, name: "foo"}, 51 {pattern: []string{"bar", "f"}, name: "foo"}, 52 {pattern: []string{"*/*"}, name: "foo"}, 53 {pattern: []string{"*/*"}, name: "./foo"}, 54 {pattern: []string{"*/*"}, name: "foo/"}, 55 {pattern: []string{"*/*"}, name: "./foo/"}, 56 {pattern: []string{"*"}, name: "foo/bar"}, 57 {pattern: []string{"*"}, name: "./foo/bar"}, 58 {pattern: []string{"*"}, name: "foo/bar/"}, 59 {pattern: []string{"*"}, name: "./foo/bar/"}, 60 {pattern: []string{"*"}, name: "foo/bar", isDir: true}, 61 {pattern: []string{"*"}, name: "./foo/bar", isDir: true}, 62 {pattern: []string{"*"}, name: "foo/bar/", isDir: true}, 63 {pattern: []string{"*"}, name: "./foo/bar/", isDir: true}, 64 } 65 66 for _, tt := range tests { 67 p, err := New(tt.pattern...) 68 require.NoError(t, err) 69 assert.False(t, p.Match(tt.name, tt.isDir)) 70 } 71 } 72 73 func TestNew_badPattern(t *testing.T) { 74 t.Parallel() 75 _, err := New("[") // Missing closing bracket. 76 assert.Error(t, err) 77 }