aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-07-26 17:52:37 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-07-27 11:15:10 +0000
commitcb5aa0067d5775c5ada1b751adc502ad2375352b (patch)
treef529c5cbd41099f2cb39743fd30e5c89a602060f /src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
parenta1a13aefe738cfa3991ae0ba89fe4488b78a1342 (diff)
Fixed JavaIoFileSystem.setLastModifiedTime to actually match its documented behavior (passing -1 modified time should use system time).
-- MOS_MIGRATED_REVID=128489592
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
index d2581a2ed1..dead488021 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java
@@ -13,10 +13,13 @@
// limitations under the License.
package com.google.devtools.build.lib.vfs;
+import com.google.common.annotations.VisibleForTesting;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.ProfilerTask;
import com.google.devtools.build.lib.unix.FileAccessException;
+import com.google.devtools.build.lib.util.Clock;
+import com.google.devtools.build.lib.util.JavaClock;
import java.io.File;
import java.io.FileNotFoundException;
@@ -42,12 +45,23 @@ public class JavaIoFileSystem extends AbstractFileSystemWithCustomStat {
private static final LinkOption[] NOFOLLOW_LINKS_OPTION =
new LinkOption[] { LinkOption.NOFOLLOW_LINKS };
+ private final Clock clock;
+
protected static final String ERR_IS_DIRECTORY = " (Is a directory)";
protected static final String ERR_DIRECTORY_NOT_EMPTY = " (Directory not empty)";
protected static final String ERR_FILE_EXISTS = " (File exists)";
protected static final String ERR_NO_SUCH_FILE_OR_DIR = " (No such file or directory)";
protected static final String ERR_NOT_A_DIRECTORY = " (Not a directory)";
+ public JavaIoFileSystem() {
+ this(new JavaClock());
+ }
+
+ @VisibleForTesting
+ JavaIoFileSystem(Clock clock) {
+ this.clock = clock;
+ }
+
protected File getIoFile(Path path) {
return new File(path.toString());
}
@@ -349,7 +363,7 @@ public class JavaIoFileSystem extends AbstractFileSystemWithCustomStat {
@Override
protected void setLastModifiedTime(Path path, long newTime) throws IOException {
File file = getIoFile(path);
- if (!file.setLastModified(newTime)) {
+ if (!file.setLastModified(newTime == -1L ? clock.currentTimeMillis() : newTime)) {
if (!file.exists()) {
throw new FileNotFoundException(path + ERR_NO_SUCH_FILE_OR_DIR);
} else if (!file.getParentFile().canWrite()) {