diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2020-05-05 00:59:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-04 18:59:37 -0400 |
commit | f0aea98c85e18b297593ed6483b620945483fa37 (patch) | |
tree | 4176b47a2162e2713169a1d7858fdb6aec3a4ed5 /std/node/_fs/promises/_fs_writeFile_test.ts | |
parent | 5f67a202ff59f25ea183c261f664a6db06407e17 (diff) |
feat(std/node): fs.writefile / fs.promises.writeFile (#5054)
Diffstat (limited to 'std/node/_fs/promises/_fs_writeFile_test.ts')
-rw-r--r-- | std/node/_fs/promises/_fs_writeFile_test.ts | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/std/node/_fs/promises/_fs_writeFile_test.ts b/std/node/_fs/promises/_fs_writeFile_test.ts new file mode 100644 index 000000000..c67a7947a --- /dev/null +++ b/std/node/_fs/promises/_fs_writeFile_test.ts @@ -0,0 +1,119 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +const { test } = Deno; + +import { + assert, + assertEquals, + assertNotEquals, + assertThrowsAsync, +} from "../../../testing/asserts.ts"; +import { writeFile } from "./_fs_writeFile.ts"; + +const decoder = new TextDecoder("utf-8"); + +test("Invalid encoding results in error()", function testEncodingErrors() { + assertThrowsAsync( + async () => { + await writeFile("some/path", "some data", "made-up-encoding"); + }, + Error, + `The value "made-up-encoding" is invalid for option "encoding"` + ); + assertThrowsAsync( + async () => { + await writeFile("some/path", "some data", { + encoding: "made-up-encoding", + }); + }, + Error, + `The value "made-up-encoding" is invalid for option "encoding"` + ); +}); + +test("Unsupported encoding results in error()", function testUnsupportedEncoding() { + assertThrowsAsync( + async () => { + await writeFile("some/path", "some data", "hex"); + }, + Error, + `Not implemented: "hex" encoding` + ); + assertThrowsAsync( + async () => { + await writeFile("some/path", "some data", { + encoding: "base64", + }); + }, + Error, + `Not implemented: "base64" encoding` + ); +}); + +test("Data is written to correct rid", async function testCorrectWriteUsingRid() { + const tempFile: string = await Deno.makeTempFile(); + const file: Deno.File = await Deno.open(tempFile, { + create: true, + write: true, + read: true, + }); + + await writeFile(file.rid, "hello world"); + Deno.close(file.rid); + + const data = await Deno.readFile(tempFile); + await Deno.remove(tempFile); + assertEquals(decoder.decode(data), "hello world"); +}); + +test("Data is written to correct file", async function testCorrectWriteUsingPath() { + const openResourcesBeforeWrite: Deno.ResourceMap = Deno.resources(); + + await writeFile("_fs_writeFile_test_file.txt", "hello world"); + + assertEquals(Deno.resources(), openResourcesBeforeWrite); + const data = await Deno.readFile("_fs_writeFile_test_file.txt"); + await Deno.remove("_fs_writeFile_test_file.txt"); + assertEquals(decoder.decode(data), "hello world"); +}); + +test("Mode is correctly set", async function testCorrectFileMode() { + if (Deno.build.os === "windows") return; + const filename = "_fs_writeFile_test_file.txt"; + await writeFile(filename, "hello world", { mode: 0o777 }); + + const fileInfo = await Deno.stat(filename); + await Deno.remove(filename); + assert(fileInfo && fileInfo.mode); + assertEquals(fileInfo.mode & 0o777, 0o777); +}); + +test("Mode is not set when rid is passed", async function testCorrectFileModeRid() { + if (Deno.build.os === "windows") return; + + const filename: string = await Deno.makeTempFile(); + const file: Deno.File = await Deno.open(filename, { + create: true, + write: true, + read: true, + }); + + await writeFile(file.rid, "hello world", { mode: 0o777 }); + Deno.close(file.rid); + + const fileInfo = await Deno.stat(filename); + await Deno.remove(filename); + assert(fileInfo.mode); + assertNotEquals(fileInfo.mode & 0o777, 0o777); +}); + +test("Mode is not implemented on windows", function testModeNotImplementedWindows(): void { + if (Deno.build.os !== "windows") return; + + assertThrowsAsync( + async () => { + await writeFile("fail.txt", "some data", { mode: 0o777 }); + }, + Error, + `Not implemented: "mode" on Windows` + ); +}); |