From f5097d9d3b62f7dc8e29e85e12f6a6f2858addbf Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Thu, 25 Jan 2024 03:26:49 +1100 Subject: feat: `Deno.FsFile.{utime,utimeSync}()` and deprecate `Deno.{futime,futimeSync}` (#22070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For removal in Deno v2. --------- Co-authored-by: Divy Srivastava Co-authored-by: Bartek IwaƄczuk --- cli/tests/unit/utime_test.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ cli/tsc/dts/lib.deno.ns.d.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) (limited to 'cli') diff --git a/cli/tests/unit/utime_test.ts b/cli/tests/unit/utime_test.ts index 48f4f405a..5101cb376 100644 --- a/cli/tests/unit/utime_test.ts +++ b/cli/tests/unit/utime_test.ts @@ -27,6 +27,27 @@ Deno.test( }, ); +Deno.test( + { permissions: { read: true, write: true } }, + async function fsFileUtimeSyncSuccess() { + const testDir = await Deno.makeTempDir(); + const filename = testDir + "/file.txt"; + using file = await Deno.open(filename, { + create: true, + write: true, + }); + + const atime = 1000; + const mtime = 50000; + await file.utime(atime, mtime); + await file.dataSync(); + + const fileInfo = Deno.statSync(filename); + assertEquals(fileInfo.atime, new Date(atime * 1000)); + assertEquals(fileInfo.mtime, new Date(mtime * 1000)); + }, +); + Deno.test( { permissions: { read: true, write: true } }, function futimeSyncSuccess() { @@ -48,6 +69,27 @@ Deno.test( }, ); +Deno.test( + { permissions: { read: true, write: true } }, + function futimeSyncSuccess() { + const testDir = Deno.makeTempDirSync(); + const filename = testDir + "/file.txt"; + using file = Deno.openSync(filename, { + create: true, + write: true, + }); + + const atime = 1000; + const mtime = 50000; + file.utimeSync(atime, mtime); + file.dataSyncSync(); + + const fileInfo = Deno.statSync(filename); + assertEquals(fileInfo.atime, new Date(atime * 1000)); + assertEquals(fileInfo.mtime, new Date(mtime * 1000)); + }, +); + Deno.test( { permissions: { read: true, write: true } }, function utimeSyncFileSuccess() { diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts index ff37abb84..175276b66 100644 --- a/cli/tsc/dts/lib.deno.ns.d.ts +++ b/cli/tsc/dts/lib.deno.ns.d.ts @@ -2632,6 +2632,32 @@ declare namespace Deno { * @category I/O */ dataSyncSync(): void; + /** + * Changes the access (`atime`) and modification (`mtime`) times of the + * file stream resource. Given times are either in seconds (UNIX epoch + * time) or as `Date` objects. + * + * ```ts + * using file = await Deno.open("file.txt", { create: true, write: true }); + * await file.utime(1556495550, new Date()); + * ``` + * + * @category File System + */ + utime(atime: number | Date, mtime: number | Date): Promise; + /** + * Synchronously changes the access (`atime`) and modification (`mtime`) + * times of the file stream resource. Given times are either in seconds + * (UNIX epoch time) or as `Date` objects. + * + * ```ts + * using file = Deno.openSync("file.txt", { create: true, write: true }); + * file.utime(1556495550, new Date()); + * ``` + * + * @category File System + */ + utimeSync(atime: number | Date, mtime: number | Date): void; /** Close the file. Closing a file when you are finished with it is * important to avoid leaking resources. * @@ -5379,6 +5405,9 @@ declare namespace Deno { * Deno.futimeSync(file.rid, 1556495550, new Date()); * ``` * + * @deprecated Use {@linkcode Deno.FsFile.utimeSync} instead. + * {@linkcode Deno.futimeSync} will be removed in Deno 2.0. + * * @category File System */ export function futimeSync( @@ -5397,6 +5426,9 @@ declare namespace Deno { * await Deno.futime(file.rid, 1556495550, new Date()); * ``` * + * @deprecated Use {@linkcode Deno.FsFile.utime} instead. + * {@linkcode Deno.futime} will be removed in Deno 2.0. + * * @category File System */ export function futime( -- cgit v1.2.3