1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

fix(ext/node): implement "ascii" encoding for node:fs writeFile() (#18097)

This commit is contained in:
Farsen976 2023-03-16 04:16:03 +01:00 committed by Yoshiya Hinosawa
parent adfe9ab292
commit dc6ee9f358
2 changed files with 50 additions and 2 deletions

View 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"',
);
},
);

View file

@ -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`);