diff options
author | Chris Knight <cknight1234@gmail.com> | 2020-03-14 21:46:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-14 17:46:39 -0400 |
commit | ea4f3ab852eba0eeb27004616163a0bbf9971215 (patch) | |
tree | 0e135fa6d55df589d795464294be2906d55f37bf /std/node/_fs/_fs_chmod_test.ts | |
parent | bf51f7b2ec1b64a7ff14f7255eba231409ee5414 (diff) |
feat: add chmod Node polyfill and related file system constants (#4358)
Diffstat (limited to 'std/node/_fs/_fs_chmod_test.ts')
-rw-r--r-- | std/node/_fs/_fs_chmod_test.ts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/std/node/_fs/_fs_chmod_test.ts b/std/node/_fs/_fs_chmod_test.ts new file mode 100644 index 000000000..9be6669f2 --- /dev/null +++ b/std/node/_fs/_fs_chmod_test.ts @@ -0,0 +1,75 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +const { test } = Deno; +import { fail, assert } from "../../testing/asserts.ts"; +import { chmod, chmodSync } from "./_fs_chmod.ts"; + +if (Deno.build.os !== "win") { + test({ + name: "ASYNC: Permissions are changed (non-Windows)", + async fn() { + const tempFile: string = await Deno.makeTempFile(); + const originalFileMode: number | null = (await Deno.lstat(tempFile)).mode; + await new Promise((resolve, reject) => { + chmod(tempFile, 0o777, err => { + if (err) reject(err); + else resolve(); + }); + }) + .then(() => { + const newFileMode: number | null = Deno.lstatSync(tempFile).mode; + assert(newFileMode && originalFileMode); + assert(newFileMode === 33279 && newFileMode > originalFileMode); + }) + .catch(() => { + fail(); + }) + .finally(() => { + Deno.removeSync(tempFile); + }); + } + }); + + test({ + name: "SYNC: Permissions are changed (non-Windows)", + fn() { + const tempFile: string = Deno.makeTempFileSync(); + const originalFileMode: number | null = Deno.lstatSync(tempFile).mode; + chmodSync(tempFile, "777"); + + const newFileMode: number | null = Deno.lstatSync(tempFile).mode; + assert(newFileMode && originalFileMode); + assert(newFileMode === 33279 && newFileMode > originalFileMode); + Deno.removeSync(tempFile); + } + }); +} + +test({ + name: "ASYNC: Error passed in callback function when bad mode passed in", + async fn() { + await new Promise((resolve, reject) => { + chmod("some_pretend_file.txt", "999", err => { + if (err) reject(err); + else resolve(); + }); + }) + .then(() => { + fail("Expected exception to be thrown"); + }) + .catch(err => { + assert(err); + }); + } +}); +test({ + name: "SYNC: Error thrown when bad mode passed in", + fn() { + let caughtError: Error | undefined; + try { + chmodSync("some_pretend_file.txt", "999"); + } catch (err) { + caughtError = err; + } + assert(caughtError); + } +}); |