diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2019-10-28 00:22:53 +0900 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-10-27 11:22:53 -0400 |
commit | efd7e78af3fc086dfdec51738905665d38d08eb4 (patch) | |
tree | bb921f7d960f33c6d4d13c043a7a45ebe74290ba /cli/js/test_util.ts | |
parent | 2598f9c68d8983934c73c135c9d277b33c98e333 (diff) |
Use web standard Permissions API (#3200)
Diffstat (limited to 'cli/js/test_util.ts')
-rw-r--r-- | cli/js/test_util.ts | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/cli/js/test_util.ts b/cli/js/test_util.ts index 2f2916e11..85fffabe6 100644 --- a/cli/js/test_util.ts +++ b/cli/js/test_util.ts @@ -29,11 +29,34 @@ interface TestPermissions { hrtime?: boolean; } -const processPerms = Deno.permissions(); +export interface Permissions { + read: boolean; + write: boolean; + net: boolean; + env: boolean; + run: boolean; + hrtime: boolean; +} + +const isGranted = async (name: Deno.PermissionName): Promise<boolean> => + (await Deno.permissions.query({ name })).state === "granted"; + +async function getProcessPermissions(): Promise<Permissions> { + return { + run: await isGranted("run"), + read: await isGranted("read"), + write: await isGranted("write"), + net: await isGranted("net"), + env: await isGranted("env"), + hrtime: await isGranted("hrtime") + }; +} + +const processPerms = await getProcessPermissions(); function permissionsMatch( - processPerms: Deno.Permissions, - requiredPerms: Deno.Permissions + processPerms: Permissions, + requiredPerms: Permissions ): boolean { for (const permName in processPerms) { if (processPerms[permName] !== requiredPerms[permName]) { @@ -44,9 +67,9 @@ function permissionsMatch( return true; } -export const permissionCombinations: Map<string, Deno.Permissions> = new Map(); +export const permissionCombinations: Map<string, Permissions> = new Map(); -function permToString(perms: Deno.Permissions): string { +function permToString(perms: Permissions): string { const r = perms.read ? 1 : 0; const w = perms.write ? 1 : 0; const n = perms.net ? 1 : 0; @@ -56,14 +79,14 @@ function permToString(perms: Deno.Permissions): string { return `permR${r}W${w}N${n}E${e}U${u}H${h}`; } -function registerPermCombination(perms: Deno.Permissions): void { +function registerPermCombination(perms: Permissions): void { const key = permToString(perms); if (!permissionCombinations.has(key)) { permissionCombinations.set(key, perms); } } -function normalizeTestPermissions(perms: TestPermissions): Deno.Permissions { +function normalizeTestPermissions(perms: TestPermissions): Permissions { return { read: !!perms.read, write: !!perms.write, |