Bladeren bron

lib/ignore: Don't match root (".")

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4122
Simon Frei 8 jaren geleden
bovenliggende
commit
0b854dff9d
2 gewijzigde bestanden met toevoegingen van 30 en 1 verwijderingen
  1. 1 1
      lib/ignore/ignore.go
  2. 29 0
      lib/ignore/ignore_test.go

+ 1 - 1
lib/ignore/ignore.go

@@ -163,7 +163,7 @@ func (m *Matcher) patternsUnchanged(file string) bool {
 }
 
 func (m *Matcher) Match(file string) (result Result) {
-	if m == nil {
+	if m == nil || file == "." {
 		return resultNotMatched
 	}
 

+ 29 - 0
lib/ignore/ignore_test.go

@@ -843,3 +843,32 @@ func TestIsInternal(t *testing.T) {
 		}
 	}
 }
+
+func TestRoot(t *testing.T) {
+	stignore := `
+	!/a
+	/*
+	`
+
+	testcases := []struct {
+		file    string
+		matches bool
+	}{
+		{".", false},
+		{"a", false},
+		{"b", true},
+	}
+
+	pats := New(true)
+	err := pats.Parse(bytes.NewBufferString(stignore), ".stignore")
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	for _, tc := range testcases {
+		res := pats.Match(tc.file).IsIgnored()
+		if res != tc.matches {
+			t.Errorf("Matches(%q) == %v, expected %v", tc.file, res, tc.matches)
+		}
+	}
+}