2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2023-03-15 23:16:03 -04:00
|
|
|
|
2024-01-21 15:48:48 -05:00
|
|
|
import {
|
|
|
|
assert,
|
|
|
|
assertEquals,
|
|
|
|
assertThrows,
|
|
|
|
} from "../../../test_util/std/assert/mod.ts";
|
2023-03-15 23:16:03 -04:00
|
|
|
import { join } from "node:path";
|
|
|
|
import { tmpdir } from "node:os";
|
2024-01-21 15:48:48 -05:00
|
|
|
import {
|
|
|
|
constants,
|
|
|
|
existsSync,
|
|
|
|
mkdtempSync,
|
|
|
|
promises,
|
|
|
|
readFileSync,
|
|
|
|
writeFileSync,
|
|
|
|
} from "node:fs";
|
2024-02-06 02:02:58 -05:00
|
|
|
import { constants as fsPromiseConstants, cp } from "node:fs/promises";
|
2023-12-04 16:05:40 -05:00
|
|
|
import { pathToAbsoluteFileUrl } from "../unit/test_util.ts";
|
2023-03-15 23:16:03 -04:00
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs writeFileSync] write file without option",
|
|
|
|
() => {
|
|
|
|
const data = "Hello";
|
|
|
|
const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt";
|
|
|
|
|
|
|
|
writeFileSync(filename, data);
|
|
|
|
const dataRead = readFileSync(filename, "utf8");
|
|
|
|
|
|
|
|
assert(dataRead === "Hello");
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs writeFileSync] write file with option ASCII",
|
|
|
|
() => {
|
|
|
|
const data = "Hello";
|
|
|
|
const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt";
|
|
|
|
|
|
|
|
writeFileSync(filename, data, { encoding: "ascii" });
|
|
|
|
const dataRead = readFileSync(filename, "utf8");
|
|
|
|
|
|
|
|
assert(dataRead === "Hello");
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs writeFileSync] write file throws error when encoding is not implemented",
|
|
|
|
() => {
|
|
|
|
const data = "Hello";
|
|
|
|
const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt";
|
|
|
|
|
|
|
|
assertThrows(
|
|
|
|
() => writeFileSync(filename, data, { encoding: "utf16le" }),
|
|
|
|
'The value "utf16le" is invalid for option "encoding"',
|
|
|
|
);
|
|
|
|
},
|
|
|
|
);
|
2023-12-04 16:05:40 -05:00
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs existsSync] path",
|
|
|
|
{ permissions: { read: true } },
|
|
|
|
() => {
|
|
|
|
assert(existsSync("cli/tests/testdata/assets/fixture.json"));
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs existsSync] url",
|
|
|
|
{ permissions: { read: true } },
|
|
|
|
() => {
|
|
|
|
assert(existsSync(
|
|
|
|
pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"),
|
|
|
|
));
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs existsSync] no permission",
|
|
|
|
{ permissions: { read: false } },
|
|
|
|
() => {
|
|
|
|
assertThrows(() => {
|
|
|
|
existsSync("cli/tests/testdata/assets/fixture.json");
|
|
|
|
}, Deno.errors.PermissionDenied);
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs existsSync] not exists",
|
|
|
|
{ permissions: { read: true } },
|
|
|
|
() => {
|
|
|
|
assert(!existsSync("bad_filename"));
|
|
|
|
},
|
|
|
|
);
|
2024-01-21 15:48:48 -05:00
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs/promises constants] is the same as from node:fs",
|
|
|
|
() => {
|
|
|
|
assertEquals(constants, fsPromiseConstants);
|
|
|
|
assertEquals(constants, promises.constants);
|
|
|
|
},
|
|
|
|
);
|
2024-02-06 02:02:58 -05:00
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"[node/fs/promises cp] copy file",
|
|
|
|
async () => {
|
|
|
|
const src = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt";
|
|
|
|
const dest = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt";
|
|
|
|
writeFileSync(src, "Hello");
|
|
|
|
|
|
|
|
await cp(src, dest);
|
|
|
|
|
|
|
|
const dataRead = readFileSync(dest, "utf8");
|
|
|
|
assert(dataRead === "Hello");
|
|
|
|
},
|
|
|
|
);
|