mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix: don't prompt when using Deno.permissions.request
with --no-prompt
(#25811)
This commit is contained in:
parent
19a9990f60
commit
da7edf1c0c
3 changed files with 23 additions and 1 deletions
|
@ -476,6 +476,9 @@ impl<TQuery: QueryDescriptor> UnaryPermission<TQuery> {
|
||||||
if state != PermissionState::Prompt {
|
if state != PermissionState::Prompt {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
if !self.prompt {
|
||||||
|
return PermissionState::Denied;
|
||||||
|
}
|
||||||
let mut message = String::with_capacity(40);
|
let mut message = String::with_capacity(40);
|
||||||
message.push_str(&format!("{} access", TQuery::flag_name()));
|
message.push_str(&format!("{} access", TQuery::flag_name()));
|
||||||
if let Some(desc) = desc {
|
if let Some(desc) = desc {
|
||||||
|
@ -3906,7 +3909,8 @@ mod tests {
|
||||||
fn test_request() {
|
fn test_request() {
|
||||||
set_prompter(Box::new(TestPrompter));
|
set_prompter(Box::new(TestPrompter));
|
||||||
let parser = TestPermissionDescriptorParser;
|
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 =
|
let read_query =
|
||||||
|path: &str| parser.parse_path_query(path).unwrap().into_read();
|
|path: &str| parser.parse_path_query(path).unwrap().into_read();
|
||||||
let write_query =
|
let write_query =
|
||||||
|
@ -3955,6 +3959,7 @@ mod tests {
|
||||||
assert_eq!(perms.run.query(None), PermissionState::Prompt);
|
assert_eq!(perms.run.query(None), PermissionState::Prompt);
|
||||||
prompt_value.set(false);
|
prompt_value.set(false);
|
||||||
assert_eq!(perms.run.request(Some(&run_query)), PermissionState::Granted);
|
assert_eq!(perms.run.request(Some(&run_query)), PermissionState::Granted);
|
||||||
|
assert_eq!(perms_no_prompt.read.request(Some(&read_query("/foo"))), PermissionState::Denied);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3512,6 +3512,22 @@ itest!(no_prompt_flag {
|
||||||
output_str: Some(""),
|
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]
|
#[test]
|
||||||
fn deno_no_prompt_environment_variable() {
|
fn deno_no_prompt_environment_variable() {
|
||||||
let output = util::deno_cmd()
|
let output = util::deno_cmd()
|
||||||
|
|
1
tests/testdata/run/permission_request_no_prompt.ts
vendored
Normal file
1
tests/testdata/run/permission_request_no_prompt.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
console.log(await Deno.permissions.request({ name: "read" }));
|
Loading…
Reference in a new issue