mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-08 22:31:04 +00:00
lib/ignore: Correct case insensitive matching on Mac/Windows
There was a bug in that we only did the lowercase folding when the pattern had an explicit (?i), which is not the case on Windows/Mac necessarily.
This commit is contained in:
parent
b678b4e048
commit
181939c841
@ -229,8 +229,12 @@ func parseIgnoreFile(fd io.Reader, currentFile string, seen map[string]bool) ([]
|
||||
}
|
||||
|
||||
if strings.HasPrefix(line, "(?i)") {
|
||||
line = strings.ToLower(line[4:])
|
||||
pattern.foldCase = true
|
||||
line = line[4:]
|
||||
}
|
||||
|
||||
if pattern.foldCase {
|
||||
line = strings.ToLower(line)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
@ -531,3 +531,28 @@ func TestWindowsPatterns(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAutomaticCaseInsensitivity(t *testing.T) {
|
||||
// We should do case insensitive matching by default on some platforms.
|
||||
if runtime.GOOS != "windows" && runtime.GOOS != "darwin" {
|
||||
t.Skip("Windows/Mac specific test")
|
||||
return
|
||||
}
|
||||
|
||||
stignore := `
|
||||
A/B
|
||||
c/d
|
||||
`
|
||||
pats := New(true)
|
||||
err := pats.Parse(bytes.NewBufferString(stignore), ".stignore")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
tests := []string{`a/B`, `C/d`}
|
||||
for _, pat := range tests {
|
||||
if !pats.Match(pat) {
|
||||
t.Errorf("Should match %s", pat)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user