From db8777c29ea612efd9a39911d39185eea483c6bf Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 13 Nov 2018 09:36:16 +0100 Subject: [PATCH] lib/model: Add test for #5323 (#5325) --- lib/model/folder_sendrecv_test.go | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lib/model/folder_sendrecv_test.go b/lib/model/folder_sendrecv_test.go index 95e041b16..22820c4cd 100644 --- a/lib/model/folder_sendrecv_test.go +++ b/lib/model/folder_sendrecv_test.go @@ -686,3 +686,45 @@ func TestDiffEmpty(t *testing.T) { } } } + +// TestDeleteIgnorePerms checks, that a file gets deleted when the IgnorePerms +// option is true and the permissions do not match between the file on disk and +// in the db. +func TestDeleteIgnorePerms(t *testing.T) { + m := setUpModel(protocol.FileInfo{}) + f := setUpSendReceiveFolder(m) + f.IgnorePerms = true + + ffs := f.Filesystem() + name := "deleteIgnorePerms" + file, err := ffs.Create(name) + if err != nil { + t.Error(err) + } + defer ffs.Remove(name) + defer file.Close() + + stat, err := file.Stat() + if err != nil { + t.Fatal(err) + } + fi, err := scanner.CreateFileInfo(stat, name, ffs) + if err != nil { + t.Fatal(err) + } + ffs.Chmod(name, 0600) + scanChan := make(chan string) + finished := make(chan struct{}) + go func() { + err = f.checkToBeDeleted(fi, scanChan) + close(finished) + }() + select { + case <-scanChan: + <-finished + case <-finished: + } + if err != nil { + t.Fatal(err) + } +}