lib/model: Detect deleted RO items scanning on non-RO (fixes #6864) (#6865)

This commit is contained in:
Simon Frei
2020-07-30 13:41:45 +02:00
committed by GitHub
parent 2dc2aa5d21
commit e46c8ab9ee
2 changed files with 58 additions and 14 deletions
+41
View File
@@ -3943,6 +3943,47 @@ func TestAddFolderCompletion(t *testing.T) {
}
}
func TestScanDeletedROChangedOnSR(t *testing.T) {
w, fcfg := tmpDefaultWrapper()
fcfg.Type = config.FolderTypeReceiveOnly
waiter, _ := w.SetFolder(fcfg)
waiter.Wait()
m := setupModel(w)
defer cleanupModel(m)
name := "foo"
ffs := fcfg.Filesystem()
must(t, writeFile(ffs, name, []byte(name), 0644))
m.ScanFolders()
file, ok := m.CurrentFolderFile(fcfg.ID, name)
if !ok {
t.Fatal("file missing in db")
}
// A remote must have the file, otherwise the deletion below is
// automatically resolved as not a ro-changed item.
m.IndexUpdate(device1, fcfg.ID, []protocol.FileInfo{file})
must(t, ffs.Remove(name))
m.ScanFolders()
if receiveOnlyChangedSize(t, m, fcfg.ID).Deleted != 1 {
t.Fatal("expected one receive only changed deleted item")
}
fcfg.Type = config.FolderTypeSendReceive
waiter, _ = w.SetFolder(fcfg)
waiter.Wait()
m.ScanFolders()
if receiveOnlyChangedSize(t, m, fcfg.ID).Deleted != 0 {
t.Fatal("expected no receive only changed deleted item")
}
if localSize(t, m, fcfg.ID).Deleted != 1 {
t.Fatal("expected one local deleted item")
}
}
func testConfigChangeClosesConnections(t *testing.T, expectFirstClosed, expectSecondClosed bool, pre func(config.Wrapper), fn func(config.Wrapper)) {
t.Helper()
wcfg, _ := tmpDefaultWrapper()