diff options
Diffstat (limited to 'cli/js')
-rw-r--r-- | cli/js/lib.deno.ns.d.ts | 2 | ||||
-rw-r--r-- | cli/js/ops/fs/mkdir.ts | 8 | ||||
-rw-r--r-- | cli/js/tests/mkdir_test.ts | 19 |
3 files changed, 21 insertions, 8 deletions
diff --git a/cli/js/lib.deno.ns.d.ts b/cli/js/lib.deno.ns.d.ts index 43e28b05b..bf10049bb 100644 --- a/cli/js/lib.deno.ns.d.ts +++ b/cli/js/lib.deno.ns.d.ts @@ -740,7 +740,7 @@ declare namespace Deno { recursive?: boolean; /** Permissions to use when creating the directory (defaults to `0o777`, * before the process's umask). - * Does nothing/raises on Windows. */ + * Ignored on Windows. */ mode?: number; } diff --git a/cli/js/ops/fs/mkdir.ts b/cli/js/ops/fs/mkdir.ts index 4df33a29f..0bd088def 100644 --- a/cli/js/ops/fs/mkdir.ts +++ b/cli/js/ops/fs/mkdir.ts @@ -1,14 +1,16 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { sendSync, sendAsync } from "../dispatch_json.ts"; +type MkdirArgs = { path: string; recursive: boolean; mode?: number }; + // TODO(ry) The complexity in argument parsing is to support deprecated forms of // mkdir and mkdirSync. function mkdirArgs( path: string, optionsOrRecursive?: MkdirOptions | boolean, mode?: number -): { path: string; recursive: boolean; mode: number } { - const args = { path, recursive: false, mode: 0o777 }; +): MkdirArgs { + const args: MkdirArgs = { path, recursive: false }; if (typeof optionsOrRecursive == "boolean") { args.recursive = optionsOrRecursive; if (mode) { @@ -34,7 +36,7 @@ export interface MkdirOptions { recursive?: boolean; /** Permissions to use when creating the directory (defaults to `0o777`, * before the process's umask). - * Does nothing/raises on Windows. */ + * Ignored on Windows. */ mode?: number; } diff --git a/cli/js/tests/mkdir_test.ts b/cli/js/tests/mkdir_test.ts index 2921177eb..d1b7aa49b 100644 --- a/cli/js/tests/mkdir_test.ts +++ b/cli/js/tests/mkdir_test.ts @@ -15,11 +15,10 @@ unitTest( { perms: { read: true, write: true } }, function mkdirSyncMode(): void { const path = Deno.makeTempDirSync() + "/dir"; - Deno.mkdirSync(path, { mode: 0o755 }); // no perm for x + Deno.mkdirSync(path, { mode: 0o737 }); const pathInfo = Deno.statSync(path); - if (pathInfo.mode !== null) { - // Skip windows - assertEquals(pathInfo.mode & 0o777, 0o755); + if (Deno.build.os !== "win") { + assertEquals(pathInfo.mode! & 0o777, 0o737 & ~Deno.umask()); } } ); @@ -45,6 +44,18 @@ unitTest( } ); +unitTest( + { perms: { read: true, write: true } }, + async function mkdirMode(): Promise<void> { + const path = Deno.makeTempDirSync() + "/dir"; + await Deno.mkdir(path, { mode: 0o737 }); + const pathInfo = Deno.statSync(path); + if (Deno.build.os !== "win") { + assertEquals(pathInfo.mode! & 0o777, 0o737 & ~Deno.umask()); + } + } +); + unitTest({ perms: { write: true } }, function mkdirErrIfExists(): void { let err; try { |