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)") {
|
if strings.HasPrefix(line, "(?i)") {
|
||||||
line = strings.ToLower(line[4:])
|
|
||||||
pattern.foldCase = true
|
pattern.foldCase = true
|
||||||
|
line = line[4:]
|
||||||
|
}
|
||||||
|
|
||||||
|
if pattern.foldCase {
|
||||||
|
line = strings.ToLower(line)
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
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