summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/lib.deno.ns.d.ts2
-rw-r--r--cli/js/ops/fs/mkdir.ts8
-rw-r--r--cli/js/tests/mkdir_test.ts19
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 {