Browse Source

lib/model: Make the (?d) prefix actually work

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3205
Audrius Butkevicius 9 years ago
parent
commit
92a23da3ec
2 changed files with 36 additions and 1 deletions
  1. 35 0
      lib/model/model_test.go
  2. 1 1
      lib/model/rwfolder.go

+ 35 - 0
lib/model/model_test.go

@@ -25,6 +25,8 @@ import (
 	"github.com/syncthing/syncthing/lib/config"
 	"github.com/syncthing/syncthing/lib/connections"
 	"github.com/syncthing/syncthing/lib/db"
+	"github.com/syncthing/syncthing/lib/ignore"
+	"github.com/syncthing/syncthing/lib/osutil"
 	"github.com/syncthing/syncthing/lib/protocol"
 )
 
@@ -1420,6 +1422,39 @@ func TestIssue3028(t *testing.T) {
 	}
 }
 
+func TestIssue3164(t *testing.T) {
+	osutil.RemoveAll("testdata/issue3164")
+	defer osutil.RemoveAll("testdata/issue3164")
+
+	if err := os.MkdirAll("testdata/issue3164/oktodelete/foobar", 0777); err != nil {
+		t.Fatal(err)
+	}
+	if err := ioutil.WriteFile("testdata/issue3164/oktodelete/foobar/file", []byte("Hello"), 0644); err != nil {
+		t.Fatal(err)
+	}
+	if err := ioutil.WriteFile("testdata/issue3164/oktodelete/file", []byte("Hello"), 0644); err != nil {
+		t.Fatal(err)
+	}
+	f := protocol.FileInfo{
+		Name: "issue3164",
+	}
+	m := ignore.New(false)
+	if err := m.Parse(bytes.NewBufferString("(?d)oktodelete"), ""); err != nil {
+		t.Fatal(err)
+	}
+
+	fl := rwFolder{
+		dbUpdates: make(chan dbUpdateJob, 1),
+		dir:       "testdata",
+	}
+
+	fl.deleteDir(f, m)
+
+	if _, err := os.Stat("testdata/issue3164"); !os.IsNotExist(err) {
+		t.Fatal(err)
+	}
+}
+
 type fakeAddr struct{}
 
 func (fakeAddr) Network() string {

+ 1 - 1
lib/model/rwfolder.go

@@ -678,7 +678,7 @@ func (f *rwFolder) deleteDir(file protocol.FileInfo, matcher *ignore.Matcher) {
 		for _, dirFile := range files {
 			fullDirFile := filepath.Join(file.Name, dirFile)
 			if defTempNamer.IsTemporary(dirFile) || (matcher != nil && matcher.Match(fullDirFile).IsDeletable()) {
-				osutil.RemoveAll(fullDirFile)
+				osutil.RemoveAll(filepath.Join(f.dir, fullDirFile))
 			}
 		}
 		dir.Close()