Fix --delete-before deleting files on copy - fixes #1166

This commit is contained in:
Nick Craig-Wood 2017-02-22 13:17:38 +00:00
parent 12aa03f5b8
commit 6b0f2ef4bd
2 changed files with 24 additions and 1 deletions

View file

@ -1052,7 +1052,7 @@ func runSyncCopyMove(fdst, fsrc Fs, deleteMode DeleteMode, DoMove bool) error {
return errors.New("can't delete and move at the same time")
}
// Run an extra pass to delete only
if !*oldSyncMethod && Config.DeleteMode == DeleteModeBefore {
if !*oldSyncMethod && deleteMode == DeleteModeBefore {
if Config.TrackRenames {
return errors.New("can't use --delete-before with --track-renames")
}

View file

@ -531,6 +531,29 @@ func TestSyncDeleteBefore(t *testing.T) {
TestSyncAfterRemovingAFileAndAddingAFile(t)
}
// Copy test delete before - shouldn't delete anything
func TestCopyDeleteBefore(t *testing.T) {
r := NewRun(t)
defer r.Finalise()
fs.Config.DeleteMode = fs.DeleteModeBefore
defer func() {
fs.Config.DeleteMode = fs.DeleteModeDefault
}()
file1 := r.WriteObject("potato", "hopefully not deleted", t1)
file2 := r.WriteFile("potato2", "hopefully copied in", t1)
fstest.CheckItems(t, r.fremote, file1)
fstest.CheckItems(t, r.flocal, file2)
fs.Stats.ResetCounters()
err := fs.CopyDir(r.fremote, r.flocal)
require.NoError(t, err)
fstest.CheckItems(t, r.fremote, file1, file2)
fstest.CheckItems(t, r.flocal, file2)
}
// Test with exclude
func TestSyncWithExclude(t *testing.T) {
r := NewRun(t)