diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2024-03-13 10:57:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-13 10:57:59 +0000 |
commit | f377fce640002c687bb2f36918f857fcc2f7bc7b (patch) | |
tree | 2192831a7a9328e8fb1030fc0e127ac841e73024 /tests/unit_node/_fs/_fs_statfs_test.ts | |
parent | 5cfa03ceca396b1c21a826cb44a984329cf35078 (diff) |
feat(node): implement fs.statfs() (#22862)
Diffstat (limited to 'tests/unit_node/_fs/_fs_statfs_test.ts')
-rw-r--r-- | tests/unit_node/_fs/_fs_statfs_test.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/unit_node/_fs/_fs_statfs_test.ts b/tests/unit_node/_fs/_fs_statfs_test.ts new file mode 100644 index 000000000..fde1c8fed --- /dev/null +++ b/tests/unit_node/_fs/_fs_statfs_test.ts @@ -0,0 +1,77 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import * as fs from "node:fs"; +import { assertEquals, assertRejects } from "@std/assert/mod.ts"; +import * as path from "@std/path/mod.ts"; + +function assertStatFs( + statFs: fs.StatsFsBase<unknown>, + { bigint = false } = {}, +) { + assertEquals(statFs.constructor.name, "StatFs"); + const expectedType = bigint ? "bigint" : "number"; + assertEquals(typeof statFs.type, expectedType); + assertEquals(typeof statFs.bsize, expectedType); + assertEquals(typeof statFs.blocks, expectedType); + assertEquals(typeof statFs.bfree, expectedType); + assertEquals(typeof statFs.bavail, expectedType); + assertEquals(typeof statFs.files, expectedType); + assertEquals(typeof statFs.ffree, expectedType); + if (Deno.build.os == "windows") { + assertEquals(statFs.type, bigint ? 0n : 0); + assertEquals(statFs.files, bigint ? 0n : 0); + assertEquals(statFs.ffree, bigint ? 0n : 0); + } +} + +const filePath = path.fromFileUrl(import.meta.url); + +Deno.test({ + name: "fs.statfs()", + async fn() { + await new Promise<fs.StatsFsBase<unknown>>((resolve, reject) => { + fs.statfs(filePath, (err, statFs) => { + if (err) reject(err); + resolve(statFs); + }); + }).then((statFs) => assertStatFs(statFs)); + }, +}); + +Deno.test({ + name: "fs.statfs() bigint", + async fn() { + await new Promise<fs.StatsFsBase<unknown>>((resolve, reject) => { + fs.statfs(filePath, { bigint: true }, (err, statFs) => { + if (err) reject(err); + resolve(statFs); + }); + }).then((statFs) => assertStatFs(statFs, { bigint: true })); + }, +}); + +Deno.test({ + name: "fs.statfsSync()", + fn() { + const statFs = fs.statfsSync(filePath); + assertStatFs(statFs); + }, +}); + +Deno.test({ + name: "fs.statfsSync() bigint", + fn() { + const statFs = fs.statfsSync(filePath, { bigint: true }); + assertStatFs(statFs, { bigint: true }); + }, +}); + +Deno.test({ + name: "fs.statfs() non-existent path", + async fn() { + const nonExistentPath = path.join(filePath, "../non-existent"); + await assertRejects(async () => { + await fs.promises.statfs(nonExistentPath); + }, "NotFound"); + }, +}); |