...

Source file src/github.com/monochromegane/go-gitignore/gitignore_test.go

Documentation: github.com/monochromegane/go-gitignore

     1  package gitignore
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  )
     7  
     8  type assert struct {
     9  	patterns []string
    10  	file     file
    11  	expect   bool
    12  }
    13  
    14  type file struct {
    15  	path  string
    16  	isDir bool
    17  }
    18  
    19  func TestMatch(t *testing.T) {
    20  	asserts := []assert{
    21  		assert{[]string{"a.txt"}, file{"a.txt", false}, true},
    22  		assert{[]string{"*.txt"}, file{"a.txt", false}, true},
    23  		assert{[]string{"dir/a.txt"}, file{"dir/a.txt", false}, true},
    24  		assert{[]string{"dir/*.txt"}, file{"dir/a.txt", false}, true},
    25  		assert{[]string{"dir2/a.txt"}, file{"dir1/dir2/a.txt", false}, true},
    26  		assert{[]string{"dir3/a.txt"}, file{"dir1/dir2/dir3/a.txt", false}, true},
    27  		assert{[]string{"a.txt"}, file{"dir/a.txt", false}, true},
    28  		assert{[]string{"*.txt"}, file{"dir/a.txt", false}, true},
    29  		assert{[]string{"a.txt"}, file{"dir1/dir2/a.txt", false}, true},
    30  		assert{[]string{"dir2/a.txt"}, file{"dir1/dir2/a.txt", false}, true},
    31  		assert{[]string{"dir"}, file{"dir", true}, true},
    32  		assert{[]string{"dir/"}, file{"dir", true}, true},
    33  		assert{[]string{"dir/"}, file{"dir", false}, false},
    34  		assert{[]string{"dir1/dir2/"}, file{"dir1/dir2", true}, true},
    35  		assert{[]string{"/a.txt"}, file{"a.txt", false}, true},
    36  		assert{[]string{"/dir/a.txt"}, file{"dir/a.txt", false}, true},
    37  		assert{[]string{"/dir1/a.txt"}, file{"dir/dir1/a.txt", false}, false},
    38  		assert{[]string{"/a.txt"}, file{"dir/a.txt", false}, false},
    39  		assert{[]string{"a.txt", "b.txt"}, file{"dir/b.txt", false}, true},
    40  		assert{[]string{"*.txt", "!b.txt"}, file{"dir/b.txt", false}, false},
    41  		assert{[]string{"dir/*.txt", "!dir/b.txt"}, file{"dir/b.txt", false}, false},
    42  		assert{[]string{"dir/*.txt", "!/b.txt"}, file{"dir/b.txt", false}, true},
    43  		assert{[]string{`\#a.txt`}, file{"#a.txt", false}, true},
    44  	}
    45  
    46  	for _, assert := range asserts {
    47  		gi := NewGitIgnoreFromReader(".", strings.NewReader(strings.Join(assert.patterns, "\n")))
    48  		result := gi.Match(assert.file.path, assert.file.isDir)
    49  		if result != assert.expect {
    50  			t.Errorf("Match should return %t, got %t on %v", assert.expect, result, assert)
    51  		}
    52  	}
    53  }
    54  

View as plain text