diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 3b5daaef7..8849f4987 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -9,6 +9,7 @@ import java.io.File import sbt.io.{ IO, Path } import sbt.io.syntax._ import Path._ +import sbt.io.Milli.getModifiedTime class FileCommands(baseDirectory: File) extends BasicStatementHandler { lazy val commands = commandMap @@ -67,7 +68,8 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { def newer(a: String, b: String): Unit = { val pathA = fromString(a) val pathB = fromString(b) - val isNewer = pathA.exists && (!pathB.exists || pathA.lastModified > pathB.lastModified) + val isNewer = pathA.exists && (!pathB.exists || getModifiedTime(pathA) > getModifiedTime( + pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 6fcb3d619..90a65b40b 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -8,6 +8,7 @@ import scala.util.control.NonFatal import sbt.io.Hash import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } import CacheImplicits._ +import sbt.io.Milli.getModifiedTime sealed trait FileInfo { def file: File } sealed trait HashFileInfo extends FileInfo { def hash: List[Byte] } @@ -88,7 +89,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, file.lastModified) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTime(file)) } object hash extends Style { @@ -145,7 +146,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, file.lastModified) + FileModified(file.getAbsoluteFile, getModifiedTime(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index debd427c7..a10d4b6bc 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -3,10 +3,11 @@ package sbt.util import sjsonnew.shaded.scalajson.ast.unsafe._ import sjsonnew._, support.scalajson.unsafe._ import sbt.internal.util.UnitSpec +import sbt.io.Milli.getModifiedTime class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, file.lastModified()) + val fileInfo: ModifiedFileInfo = FileModified(file, getModifiedTime(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo)