diff options
3 files changed, 13 insertions, 8 deletions
diff --git a/libs/io/src/main/java/org/the_jk/cleversync/io/SingleMerge.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/SingleMerge.kt index f9107db..711daae 100644 --- a/libs/io/src/main/java/org/the_jk/cleversync/io/SingleMerge.kt +++ b/libs/io/src/main/java/org/the_jk/cleversync/io/SingleMerge.kt @@ -100,7 +100,10 @@ object SingleMerge { } else { val targetFile = targetContent.files.find { it.name == sourceName } if (targetFile != null) { - if (targetFile.size != sourceSize || sourceLastModified > targetFile.lastModified) { + // When comparing times, reduce to nearest second, anything else + // over network based filesystems is just silly. + if (targetFile.size != sourceSize || + sourceLastModified.epochSecond > targetFile.lastModified.epochSecond) { actions.add(Action.Copy(sourceName, overwrite = true)) } } else { diff --git a/libs/io/src/test/java/org/the_jk/cleversync/io/SingleMergeLocalTest.kt b/libs/io/src/test/java/org/the_jk/cleversync/io/SingleMergeLocalTest.kt index 07cc848..d13213c 100644 --- a/libs/io/src/test/java/org/the_jk/cleversync/io/SingleMergeLocalTest.kt +++ b/libs/io/src/test/java/org/the_jk/cleversync/io/SingleMergeLocalTest.kt @@ -3,7 +3,6 @@ package org.the_jk.cleversync.io import org.junit.Rule import org.junit.rules.TemporaryFolder import org.the_jk.cleversync.local.LocalTreeFactory -import kotlin.time.Duration.Companion.milliseconds class SingleMergeLocalTest : BaseSingleMergeTest() { @Rule @@ -21,6 +20,4 @@ class SingleMergeLocalTest : BaseSingleMergeTest() { } override fun targetSupportsSymlinks() = true - - override fun minModificationTime() = 10.milliseconds } diff --git a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt index 65d870b..c50f6fa 100644 --- a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt +++ b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt @@ -6,7 +6,7 @@ import org.junit.Assert import org.junit.Assume import org.junit.Before import org.junit.Test -import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds abstract class BaseSingleMergeTest { private lateinit var src: ModifiableTree @@ -67,7 +67,7 @@ abstract class BaseSingleMergeTest { fun oneFileAlreadyExistsSameSizeContentOlder() { val tgtFile = tgt.createFile("foo") tgtFile.write().writer().use { it.write("Cruel World") } - Thread.sleep(minModificationTime().inWholeMilliseconds) + Thread.sleep(MIN_MODIFICATION_TIME.inWholeMilliseconds) val srcFile = src.createFile("foo") srcFile.write().writer().use { it.write("Hello World") } @@ -84,7 +84,7 @@ abstract class BaseSingleMergeTest { fun oneFileAlreadyExistsSameSizeContentNewer() { val srcFile = src.createFile("foo") srcFile.write().writer().use { it.write("Hello World") } - Thread.sleep(minModificationTime().inWholeMilliseconds) + Thread.sleep(MIN_MODIFICATION_TIME.inWholeMilliseconds) val tgtFile = tgt.createFile("foo") tgtFile.write().writer().use { it.write("hello world") } @@ -705,5 +705,10 @@ abstract class BaseSingleMergeTest { abstract fun target(): ModifiableTree abstract fun targetSupportsSymlinks(): Boolean - abstract fun minModificationTime(): Duration + private companion object { + // See SingleMerge, anything less than a second is ignored + // Not great, but for network file systems we really can't + // be asking for better. + val MIN_MODIFICATION_TIME = 1.seconds + } } |
