fix: don't prompt when using Deno.permissions.request with --no-prompt (#25811)

This commit is contained in:
Simon Lecoq 2024-10-03 08:28:38 -04:00 committed by GitHub
parent 19a9990f60
commit da7edf1c0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 1 deletions

View File

@ -476,6 +476,9 @@ impl<TQuery: QueryDescriptor> UnaryPermission<TQuery> {
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 {
@ -3906,7 +3909,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 =
@ -3955,6 +3959,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);
};
}

View File

@ -3512,6 +3512,22 @@ itest!(no_prompt_flag {
output_str: Some(""),
});
#[test]
fn permission_request_with_no_prompt() {
TestContext::default()
.new_command()
.env("NO_COLOR", "1")
.args_vec([
"run",
"--quiet",
"--no-prompt",
"run/permission_request_no_prompt.ts",
])
.with_pty(|mut console| {
console.expect("PermissionStatus { state: \"denied\", onchange: null }");
});
}
#[test]
fn deno_no_prompt_environment_variable() {
let output = util::deno_cmd()

View File

@ -0,0 +1 @@
console.log(await Deno.permissions.request({ name: "read" }));