diff options
Diffstat (limited to 'cli/permissions.rs')
-rw-r--r-- | cli/permissions.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cli/permissions.rs b/cli/permissions.rs index d99daa005..a6d0210ea 100644 --- a/cli/permissions.rs +++ b/cli/permissions.rs @@ -14,6 +14,8 @@ use std::path::{Path, PathBuf}; use std::sync::atomic::AtomicBool; #[cfg(test)] use std::sync::atomic::Ordering; +#[cfg(test)] +use std::sync::Mutex; use url::Url; const PERMISSION_EMOJI: &str = "⚠️"; @@ -326,6 +328,12 @@ fn permission_prompt(message: &str) -> bool { } #[cfg(test)] +lazy_static! { + /// Lock this when you use `set_prompt_result` in a test case. + static ref PERMISSION_PROMPT_GUARD: Mutex<()> = Mutex::new(()); +} + +#[cfg(test)] static STUB_PROMPT_VALUE: AtomicBool = AtomicBool::new(true); #[cfg(test)] @@ -521,6 +529,7 @@ mod tests { #[test] fn test_permissions_request_run() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let mut perms0 = DenoPermissions::from_flags(&DenoFlags { ..Default::default() }); @@ -532,10 +541,12 @@ mod tests { }); set_prompt_result(false); assert_eq!(perms1.request_run(), PermissionState::Deny); + drop(guard); } #[test] fn test_permissions_request_read() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let whitelist = vec![PathBuf::from("/foo/bar")]; let mut perms0 = DenoPermissions::from_flags(&DenoFlags { read_whitelist: whitelist.clone(), @@ -568,10 +579,12 @@ mod tests { perms2.request_read(&Some(Path::new("/foo/baz"))), PermissionState::Deny ); + drop(guard); } #[test] fn test_permissions_request_write() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let whitelist = vec![PathBuf::from("/foo/bar")]; let mut perms0 = DenoPermissions::from_flags(&DenoFlags { write_whitelist: whitelist.clone(), @@ -604,10 +617,12 @@ mod tests { perms2.request_write(&Some(Path::new("/foo/baz"))), PermissionState::Deny ); + drop(guard); } #[test] fn test_permission_request_net() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let whitelist = svec!["localhost:8080"]; let mut perms0 = DenoPermissions::from_flags(&DenoFlags { @@ -654,10 +669,12 @@ mod tests { }); set_prompt_result(true); assert!(perms3.request_net(&Some(":")).is_err()); + drop(guard); } #[test] fn test_permissions_request_env() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let mut perms0 = DenoPermissions::from_flags(&DenoFlags { ..Default::default() }); @@ -669,10 +686,12 @@ mod tests { }); set_prompt_result(false); assert_eq!(perms1.request_env(), PermissionState::Deny); + drop(guard); } #[test] fn test_permissions_request_plugin() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let mut perms0 = DenoPermissions::from_flags(&DenoFlags { ..Default::default() }); @@ -684,10 +703,12 @@ mod tests { }); set_prompt_result(false); assert_eq!(perms1.request_plugin(), PermissionState::Deny); + drop(guard); } #[test] fn test_permissions_request_hrtime() { + let guard = PERMISSION_PROMPT_GUARD.lock().unwrap(); let mut perms0 = DenoPermissions::from_flags(&DenoFlags { ..Default::default() }); @@ -699,5 +720,6 @@ mod tests { }); set_prompt_result(false); assert_eq!(perms1.request_hrtime(), PermissionState::Deny); + drop(guard); } } |