From 0a1bdb6bf658857f0f3d9266fb8be317ed2c5f78 Mon Sep 17 00:00:00 2001 From: David Kocher Date: Thu, 27 Jun 2024 12:31:36 +0200 Subject: [PATCH] Configure to change timestamps explicitly only. --- .../main/java/ch/cyberduck/core/brick/BrickProtocol.java | 2 +- .../core/brick/BrickAttributesFinderFeatureTest.java | 9 +++++---- .../java/ch/cyberduck/core/brick/BrickProtocolTest.java | 2 +- .../cyberduck/core/brick/BrickTimestampFeatureTest.java | 9 +++++++++ .../ch/cyberduck/core/brick/BrickWriteFeatureTest.java | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/brick/src/main/java/ch/cyberduck/core/brick/BrickProtocol.java b/brick/src/main/java/ch/cyberduck/core/brick/BrickProtocol.java index 2e3b5f1d0f6..b6d273844a8 100644 --- a/brick/src/main/java/ch/cyberduck/core/brick/BrickProtocol.java +++ b/brick/src/main/java/ch/cyberduck/core/brick/BrickProtocol.java @@ -46,7 +46,7 @@ public Scheme getScheme() { @Override public DirectoryTimestamp getDirectoryTimestamp() { - return DirectoryTimestamp.implicit; + return DirectoryTimestamp.explicit; } @Override diff --git a/brick/src/test/java/ch/cyberduck/core/brick/BrickAttributesFinderFeatureTest.java b/brick/src/test/java/ch/cyberduck/core/brick/BrickAttributesFinderFeatureTest.java index 97c49d59d36..e36178eeb68 100644 --- a/brick/src/test/java/ch/cyberduck/core/brick/BrickAttributesFinderFeatureTest.java +++ b/brick/src/test/java/ch/cyberduck/core/brick/BrickAttributesFinderFeatureTest.java @@ -65,11 +65,12 @@ public void testFindFile() throws Exception { final Path folder = new BrickDirectoryFeature(session).mkdir( new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus()); final long folderTimestamp = f.find(folder).getModificationDate(); - final Path test = new BrickTouchFeature(session).touch(new Path(folder, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus()); - assertEquals(Protocol.DirectoryTimestamp.implicit, session.getHost().getProtocol().getDirectoryTimestamp()); + final Path test = new BrickTouchFeature(session).touch(new Path(folder, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), + new TransferStatus().withModified(1719480508000L)); + assertEquals(Protocol.DirectoryTimestamp.explicit, session.getHost().getProtocol().getDirectoryTimestamp()); assertNotEquals(folderTimestamp, f.find(folder).getModificationDate()); - assertNotEquals(rootAttributes, f.find(root)); - assertNotEquals(rootAttributes.getModificationDate(), f.find(root).getModificationDate()); + assertEquals(rootAttributes, f.find(root)); + assertEquals(rootAttributes.getModificationDate(), f.find(root).getModificationDate()); final PathAttributes attributes = f.find(test); assertEquals(0L, attributes.getSize()); assertNotEquals(-1L, attributes.getModificationDate()); diff --git a/brick/src/test/java/ch/cyberduck/core/brick/BrickProtocolTest.java b/brick/src/test/java/ch/cyberduck/core/brick/BrickProtocolTest.java index 9ae80fe9ab6..9bef649597b 100644 --- a/brick/src/test/java/ch/cyberduck/core/brick/BrickProtocolTest.java +++ b/brick/src/test/java/ch/cyberduck/core/brick/BrickProtocolTest.java @@ -26,6 +26,6 @@ public class BrickProtocolTest { @Test public void testFeatures() { assertEquals(Protocol.Case.insensitive, new BrickProtocol().getCaseSensitivity()); - assertEquals(Protocol.DirectoryTimestamp.implicit, new BrickProtocol().getDirectoryTimestamp()); + assertEquals(Protocol.DirectoryTimestamp.explicit, new BrickProtocol().getDirectoryTimestamp()); } } \ No newline at end of file diff --git a/brick/src/test/java/ch/cyberduck/core/brick/BrickTimestampFeatureTest.java b/brick/src/test/java/ch/cyberduck/core/brick/BrickTimestampFeatureTest.java index ae0a4d4a66e..bf8ec0e07a7 100644 --- a/brick/src/test/java/ch/cyberduck/core/brick/BrickTimestampFeatureTest.java +++ b/brick/src/test/java/ch/cyberduck/core/brick/BrickTimestampFeatureTest.java @@ -20,6 +20,7 @@ import ch.cyberduck.core.Path; import ch.cyberduck.core.PathAttributes; import ch.cyberduck.core.features.Delete; +import ch.cyberduck.core.features.Timestamp; import ch.cyberduck.core.shared.DefaultAttributesFinderFeature; import ch.cyberduck.core.shared.DefaultHomeFinderService; import ch.cyberduck.core.transfer.TransferStatus; @@ -58,4 +59,12 @@ public void testSetTimestampDirectory() throws Exception { assertEquals(5000L, new DefaultAttributesFinderFeature(session).find(file).getModificationDate()); new BrickDeleteFeature(session).delete(Collections.singletonList(file), new DisabledLoginCallback(), new Delete.DisabledCallback()); } + + @Test + public void testSetTimestampRoot() throws Exception { + final Path file = new Path("/", EnumSet.of(Path.Type.directory, Path.Type.volume)); + final long ts = System.currentTimeMillis(); + new BrickTimestampFeature(session).setTimestamp(file, ts); + assertEquals(Timestamp.toSeconds(ts), new BrickAttributesFinderFeature(session).find(file).getModificationDate()); + } } diff --git a/brick/src/test/java/ch/cyberduck/core/brick/BrickWriteFeatureTest.java b/brick/src/test/java/ch/cyberduck/core/brick/BrickWriteFeatureTest.java index 78152cfe5a5..b4639e3233c 100644 --- a/brick/src/test/java/ch/cyberduck/core/brick/BrickWriteFeatureTest.java +++ b/brick/src/test/java/ch/cyberduck/core/brick/BrickWriteFeatureTest.java @@ -63,7 +63,7 @@ public void testWriteSinglePart() throws Exception { assertNull(out.getStatus()); assertTrue(new BrickFindFeature(session).find(file)); final PathAttributes attributes = new BrickAttributesFinderFeature(session).find(file); - assertNotEquals(containerTimestamp, new BrickAttributesFinderFeature(session).find(container).getModificationDate()); + assertEquals(containerTimestamp, new BrickAttributesFinderFeature(session).find(container).getModificationDate()); assertEquals(content.length, attributes.getSize()); final byte[] compare = new byte[content.length]; final InputStream stream = new BrickReadFeature(session).read(file, new TransferStatus().withLength(content.length), new DisabledConnectionCallback());