func TestCaseSensitivity(t *testing.T) { ign, _ := ignore.Parse(bytes.NewBufferString("test"), ".stignore") match := []string{"test"} dontMatch := []string{"foo"} switch runtime.GOOS { case "darwin", "windows": match = append(match, "TEST", "Test", "tESt") default: dontMatch = append(dontMatch, "TEST", "Test", "tESt") } for _, tc := range match { if !ign.Match(tc) { t.Errorf("Incorrect match for %q: should be matched", tc) } } for _, tc := range dontMatch { if ign.Match(tc) { t.Errorf("Incorrect match for %q: should not be matched", tc) } } }
func TestBadPatterns(t *testing.T) { var badPatterns = []string{ "[", "/[", "**/[", "#include nonexistent", "#include .stignore", "!#include makesnosense", } for _, pat := range badPatterns { parsed, err := ignore.Parse(bytes.NewBufferString(pat), ".stignore") if err == nil { t.Errorf("No error for pattern %q: %v", pat, parsed) } } }
func TestExcludes(t *testing.T) { stignore := ` !iex2 !ign1/ex ign1 i*2 !ign2 ` pats, err := ignore.Parse(bytes.NewBufferString(stignore), ".stignore") if err != nil { t.Fatal(err) } var tests = []struct { f string r bool }{ {"ign1", true}, {"ign2", true}, {"ibla2", true}, {"iex2", false}, {filepath.Join("ign1", "ign"), true}, {filepath.Join("ign1", "ex"), false}, {filepath.Join("ign1", "iex2"), false}, {filepath.Join("iex2", "ign"), false}, {filepath.Join("foo", "bar", "ign1"), true}, {filepath.Join("foo", "bar", "ign2"), true}, {filepath.Join("foo", "bar", "iex2"), false}, } for _, tc := range tests { if r := pats.Match(tc.f); r != tc.r { t.Errorf("Incorrect match for %s: %v != %v", tc.f, r, tc.r) } } }