bisync: ignore expected "nothing to transfer" differences on tests
The "There was nothing to transfer" log is only printed when the number of transfers is exactly 0. However, there are a variety of reasons why the transfer count would be expected to differ between backends. For example, if either side lacks hashes, the sync may in fact need to transfer, where it would otherwise skip based on hash or just update modtime. Transfer stats will also differ in the "src and dst identical but can't set mod time without deleting and re- uploading" scenario (because the re-upload is a transfer), and where --download-hash is needed (because calculating the hash requires downloading the file, which is a transfer). Before this change, these expected differences would result in erroneous test failures. This change fixes the issue by ignoring the absence of the "nothing to transfer" log where it is expected. Note that this issue did not occur before https://github.com/rclone/rclone/commit/9e200531b1490000656031c42fff4d95477e1b46 because the number of transfers was not getting reset between test steps, sometimes resulting in an artificially inflated transfers count.
This commit is contained in:
@@ -1630,6 +1630,14 @@ func (b *bisyncTest) mangleResult(dir, file string, golden bool) string {
|
||||
`^.*not equal on recheck.*$`, dropMe,
|
||||
)
|
||||
}
|
||||
if b.ignoreBlankHash || !b.fs1.Hashes().Contains(hash.MD5) || !b.fs2.Hashes().Contains(hash.MD5) {
|
||||
// if either side lacks support for md5, need to ignore the "nothing to transfer" log,
|
||||
// as sync may in fact need to transfer, where it would otherwise skip based on hash or just update modtime.
|
||||
// transfer stats will also differ in fs.ErrorCantSetModTimeWithoutDelete scenario, and where --download-hash is needed.
|
||||
logReplacements = append(logReplacements,
|
||||
`^.*There was nothing to transfer.*$`, dropMe,
|
||||
)
|
||||
}
|
||||
rep := logReplacements
|
||||
if b.testCase == "dry_run" {
|
||||
rep = append(rep, dryrunReplacements...)
|
||||
|
||||
Reference in New Issue
Block a user