summaryrefslogtreecommitdiff
path: root/std/fs/exists_test.ts
diff options
context:
space:
mode:
authorAxetroy <axetroy.dev@gmail.com>2019-12-13 22:47:09 +0800
committerRy Dahl <ry@tinyclouds.org>2019-12-13 22:47:09 +0800
commit8cf8a29d35d5832230034b3f9f6ce3cc67dba7c1 (patch)
tree8103652192c652da7389d8551b86f99eb4624bfb /std/fs/exists_test.ts
parentdf7d8288d984f703722fae161b7d32fae9ab3149 (diff)
fix permission errors are swallowed by fs.exists (#3493)
Diffstat (limited to 'std/fs/exists_test.ts')
-rw-r--r--std/fs/exists_test.ts93
1 files changed, 93 insertions, 0 deletions
diff --git a/std/fs/exists_test.ts b/std/fs/exists_test.ts
index e65befa78..69c18d467 100644
--- a/std/fs/exists_test.ts
+++ b/std/fs/exists_test.ts
@@ -46,3 +46,96 @@ test(async function existsLink(): Promise<void> {
// in repository
assertEquals(await exists(path.join(testdataDir, "0-link.ts")), true);
});
+
+test(async function existsPermission(): Promise<void> {
+ interface Scenes {
+ read: boolean; // --allow-read
+ async: boolean;
+ output: string;
+ file: string; // target file to run
+ }
+
+ const scenes: Scenes[] = [
+ // 1
+ {
+ read: false,
+ async: true,
+ output: "run again with the --allow-read flag",
+ file: "0.ts"
+ },
+ {
+ read: false,
+ async: false,
+ output: "run again with the --allow-read flag",
+ file: "0.ts"
+ },
+ // 2
+ {
+ read: true,
+ async: true,
+ output: "exist",
+ file: "0.ts"
+ },
+ {
+ read: true,
+ async: false,
+ output: "exist",
+ file: "0.ts"
+ },
+ // 3
+ {
+ read: false,
+ async: true,
+ output: "run again with the --allow-read flag",
+ file: "no_exist_file_for_test.ts"
+ },
+ {
+ read: false,
+ async: false,
+ output: "run again with the --allow-read flag",
+ file: "no_exist_file_for_test.ts"
+ },
+ // 4
+ {
+ read: true,
+ async: true,
+ output: "not exist",
+ file: "no_exist_file_for_test.ts"
+ },
+ {
+ read: true,
+ async: false,
+ output: "not exist",
+ file: "no_exist_file_for_test.ts"
+ }
+ ];
+
+ for (const s of scenes) {
+ console.log(
+ `test ${s.async ? "exists" : "existsSync"}("testdata/${s.file}") ${
+ s.read ? "with" : "without"
+ } --allow-read`
+ );
+
+ const args = [Deno.execPath(), "run"];
+
+ if (s.read) {
+ args.push("--allow-read");
+ }
+
+ args.push(path.join(testdataDir, s.async ? "exists.ts" : "exists_sync.ts"));
+ args.push(s.file);
+
+ const { stdout } = Deno.run({
+ stdout: "piped",
+ cwd: testdataDir,
+ args: args
+ });
+
+ const output = await Deno.readAll(stdout);
+
+ assertEquals(new TextDecoder().decode(output), s.output);
+ }
+
+ // done
+});