From 5cfd12ee735915bc4304be56bb7f2aadeb2d3b93 Mon Sep 17 00:00:00 2001 From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:20:06 -0400 Subject: [PATCH] fix: don't prompt when using `Deno.permissions.request` with `--no-prompt` --- runtime/permissions/lib.rs | 7 ++++++- tests/specs/permission/request_no_prompt/__test__.jsonc | 4 ++++ tests/specs/permission/request_no_prompt/main.out | 1 + tests/specs/permission/request_no_prompt/main.ts | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/specs/permission/request_no_prompt/__test__.jsonc create mode 100644 tests/specs/permission/request_no_prompt/main.out create mode 100644 tests/specs/permission/request_no_prompt/main.ts diff --git a/runtime/permissions/lib.rs b/runtime/permissions/lib.rs index c7ef864dbc4345..240397b2db19f3 100644 --- a/runtime/permissions/lib.rs +++ b/runtime/permissions/lib.rs @@ -476,6 +476,9 @@ impl UnaryPermission { if state != PermissionState::Prompt { return state; } + if !self.prompt { + return PermissionState::Denied; + } let mut message = String::with_capacity(40); message.push_str(&format!("{} access", TQuery::flag_name())); if let Some(desc) = desc { @@ -3438,7 +3441,8 @@ mod tests { fn test_request() { set_prompter(Box::new(TestPrompter)); let parser = TestPermissionDescriptorParser; - let mut perms: Permissions = Permissions::none_without_prompt(); + let mut perms: Permissions = Permissions::none_with_prompt(); + let mut perms_no_prompt: Permissions = Permissions::none_without_prompt(); let read_query = |path: &str| parser.parse_path_query(path).unwrap().into_read(); let write_query = @@ -3486,6 +3490,7 @@ mod tests { assert_eq!(perms.run.query(None), PermissionState::Prompt); prompt_value.set(false); assert_eq!(perms.run.request(Some(&run_query)), PermissionState::Granted); + assert_eq!(perms_no_prompt.read.request(Some(&read_query("/foo"))), PermissionState::Denied); }; } diff --git a/tests/specs/permission/request_no_prompt/__test__.jsonc b/tests/specs/permission/request_no_prompt/__test__.jsonc new file mode 100644 index 00000000000000..4da084d71210d3 --- /dev/null +++ b/tests/specs/permission/request_no_prompt/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "run --no-prompt main.ts", + "output": "main.out" +} diff --git a/tests/specs/permission/request_no_prompt/main.out b/tests/specs/permission/request_no_prompt/main.out new file mode 100644 index 00000000000000..e02df112530a71 --- /dev/null +++ b/tests/specs/permission/request_no_prompt/main.out @@ -0,0 +1 @@ +PermissionStatus { state: "denied", onchange: null } diff --git a/tests/specs/permission/request_no_prompt/main.ts b/tests/specs/permission/request_no_prompt/main.ts new file mode 100644 index 00000000000000..e33ffe3ce8c486 --- /dev/null +++ b/tests/specs/permission/request_no_prompt/main.ts @@ -0,0 +1 @@ +console.log(await Deno.permissions.request({ name: "read" }));