sync: don't update mod times if --dry-run set - fixes #1100

s3-about
Nick Craig-Wood 2017-02-15 23:09:44 +00:00
parent f15c6b68b6
commit b52c80e85c
2 changed files with 26 additions and 10 deletions

View File

@ -172,6 +172,9 @@ func equal(src, dst Object, sizeOnly, checkSum bool) bool {
// mod time differs but hash is the same to reset mod time if required
if !Config.NoUpdateModTime {
if Config.DryRun {
Logf(src, "Not updating modification time as --dry-run")
} else {
// Size and hash the same but mtime different so update the
// mtime of the dst object here
err := dst.SetModTime(srcModTime)
@ -185,6 +188,7 @@ func equal(src, dst Object, sizeOnly, checkSum bool) bool {
Infof(src, "Updated modification time in destination")
}
}
}
return true
}

View File

@ -308,10 +308,22 @@ func TestSyncAfterChangingModtimeOnly(t *testing.T) {
fstest.CheckItems(t, r.flocal, file1)
fstest.CheckItems(t, r.fremote, file2)
fs.Config.DryRun = true
defer func() { fs.Config.DryRun = false }()
fs.Stats.ResetCounters()
err := fs.Sync(r.fremote, r.flocal)
require.NoError(t, err)
fstest.CheckItems(t, r.flocal, file1)
fstest.CheckItems(t, r.fremote, file2)
fs.Config.DryRun = false
fs.Stats.ResetCounters()
err = fs.Sync(r.fremote, r.flocal)
require.NoError(t, err)
fstest.CheckItems(t, r.flocal, file1)
fstest.CheckItems(t, r.fremote, file1)
}