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  }