diff options
Diffstat (limited to 'std/fs/exists_test.ts')
-rw-r--r-- | std/fs/exists_test.ts | 93 |
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 +}); |