mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix permission errors are swallowed by fs.exists (#3493)
This commit is contained in:
parent
df7d8288d9
commit
8cf8a29d35
4 changed files with 132 additions and 6 deletions
|
@ -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
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue