mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(ext/node): implement "ascii" encoding for node:fs writeFile() (#18097)
This commit is contained in:
parent
adfe9ab292
commit
dc6ee9f358
2 changed files with 50 additions and 2 deletions
48
cli/tests/unit_node/fs_test.ts
Normal file
48
cli/tests/unit_node/fs_test.ts
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||||
|
|
||||||
|
import {
|
||||||
|
assert,
|
||||||
|
assertThrows,
|
||||||
|
} from "../../../test_util/std/testing/asserts.ts";
|
||||||
|
import { join } from "node:path";
|
||||||
|
import { tmpdir } from "node:os";
|
||||||
|
import { mkdtempSync, readFileSync, writeFileSync } from "node:fs";
|
||||||
|
|
||||||
|
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"',
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
|
@ -74,7 +74,7 @@ export function checkEncoding(encoding: Encodings | null): Encodings | null {
|
||||||
if (!encoding) return null;
|
if (!encoding) return null;
|
||||||
|
|
||||||
encoding = encoding.toLowerCase() as Encodings;
|
encoding = encoding.toLowerCase() as Encodings;
|
||||||
if (["utf8", "hex", "base64"].includes(encoding)) return encoding;
|
if (["utf8", "hex", "base64", "ascii"].includes(encoding)) return encoding;
|
||||||
|
|
||||||
if (encoding === "utf-8") {
|
if (encoding === "utf-8") {
|
||||||
return "utf8";
|
return "utf8";
|
||||||
|
@ -85,7 +85,7 @@ export function checkEncoding(encoding: Encodings | null): Encodings | null {
|
||||||
// node -e "require('fs').readFile('../world.txt', 'buffer', console.log)"
|
// node -e "require('fs').readFile('../world.txt', 'buffer', console.log)"
|
||||||
}
|
}
|
||||||
|
|
||||||
const notImplementedEncodings = ["utf16le", "latin1", "ascii", "ucs2"];
|
const notImplementedEncodings = ["utf16le", "latin1", "ucs2"];
|
||||||
|
|
||||||
if (notImplementedEncodings.includes(encoding as string)) {
|
if (notImplementedEncodings.includes(encoding as string)) {
|
||||||
notImplemented(`"${encoding}" encoding`);
|
notImplemented(`"${encoding}" encoding`);
|
||||||
|
|
Loading…
Reference in a new issue