diff options
author | Parker Gabel <parkerdgabel@email.arizona.edu> | 2020-04-03 12:20:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-03 15:20:40 -0400 |
commit | 0db04d6a429eb498e854a5fc1ef905b87dea5e4d (patch) | |
tree | d8a5fc6d7262622b2209b80afd28d8c4fc1304e6 /cli/js | |
parent | 24261744857df3cca8c9e05f07cc85c0346a6751 (diff) |
fix(#4546) Added Math.trunc to toSecondsFromEpoch to conform the result to u64 (#4575)
Diffstat (limited to 'cli/js')
-rw-r--r-- | cli/js/ops/fs/utime.ts | 2 | ||||
-rw-r--r-- | cli/js/tests/utime_test.ts | 51 |
2 files changed, 52 insertions, 1 deletions
diff --git a/cli/js/ops/fs/utime.ts b/cli/js/ops/fs/utime.ts index cd195531c..2755a7e96 100644 --- a/cli/js/ops/fs/utime.ts +++ b/cli/js/ops/fs/utime.ts @@ -2,7 +2,7 @@ import { sendSync, sendAsync } from "../dispatch_json.ts"; function toSecondsFromEpoch(v: number | Date): number { - return v instanceof Date ? v.valueOf() / 1000 : v; + return v instanceof Date ? Math.trunc(v.valueOf() / 1000) : v; } export function utimeSync( diff --git a/cli/js/tests/utime_test.ts b/cli/js/tests/utime_test.ts index 917b8b8b6..a81600e54 100644 --- a/cli/js/tests/utime_test.ts +++ b/cli/js/tests/utime_test.ts @@ -60,6 +60,31 @@ unitTest( unitTest( { perms: { read: true, write: true } }, + function utimeSyncFileDateSuccess() { + const testDir = Deno.makeTempDirSync(); + const filename = testDir + "/file.txt"; + Deno.writeFileSync(filename, new TextEncoder().encode("hello"), { + mode: 0o666, + }); + const atime = new Date(); + const mtime = new Date(); + Deno.utimeSync(filename, atime, mtime); + + const fileInfo = Deno.statSync(filename); + // atime and mtime must be scaled by a factor of 1000 to be recorded in seconds + assertFuzzyTimestampEquals( + fileInfo.accessed, + Math.trunc(atime.valueOf() / 1000) + ); + assertFuzzyTimestampEquals( + fileInfo.modified, + Math.trunc(mtime.valueOf() / 1000) + ); + } +); + +unitTest( + { perms: { read: true, write: true } }, function utimeSyncLargeNumberSuccess(): void { const testDir = Deno.makeTempDirSync(); @@ -160,6 +185,32 @@ unitTest( unitTest( { perms: { read: true, write: true } }, + async function utimeFileDateSuccess(): Promise<void> { + const testDir = Deno.makeTempDirSync(); + const filename = testDir + "/file.txt"; + Deno.writeFileSync(filename, new TextEncoder().encode("hello"), { + mode: 0o666, + }); + + const atime = new Date(); + const mtime = new Date(); + await Deno.utime(filename, atime, mtime); + + const fileInfo = Deno.statSync(filename); + // The dates must be scaled by a factored of 1000 to make them seconds + assertFuzzyTimestampEquals( + fileInfo.accessed, + Math.trunc(atime.valueOf() / 1000) + ); + assertFuzzyTimestampEquals( + fileInfo.modified, + Math.trunc(mtime.valueOf() / 1000) + ); + } +); + +unitTest( + { perms: { read: true, write: true } }, async function utimeNotFound(): Promise<void> { const atime = 1000; const mtime = 50000; |