diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2022-09-21 15:18:58 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-21 15:18:58 +0900 |
commit | cc32a297da2d92983573a1cea1ca669d6139d77d (patch) | |
tree | 3c63367faf9594969b07bfcc8d11f6018ecc2b6e /runtime/ops/os.rs | |
parent | 35fe9ee530b389f9249a7eccc2b0f91dc3cb414e (diff) |
fix(runtime): better error message with Deno.env.get/set (#15966)
Diffstat (limited to 'runtime/ops/os.rs')
-rw-r--r-- | runtime/ops/os.rs | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/runtime/ops/os.rs b/runtime/ops/os.rs index 21a94b0fb..70d429839 100644 --- a/runtime/ops/os.rs +++ b/runtime/ops/os.rs @@ -80,10 +80,20 @@ fn op_set_env( value: String, ) -> Result<(), AnyError> { state.borrow_mut::<Permissions>().env.check(&key)?; - let invalid_key = key.is_empty() || key.contains(&['=', '\0'] as &[char]); - let invalid_value = value.contains('\0'); - if invalid_key || invalid_value { - return Err(type_error("Key or value contains invalid characters.")); + if key.is_empty() { + return Err(type_error("Key is an empty string.")); + } + if key.contains(&['=', '\0'] as &[char]) { + return Err(type_error(format!( + "Key contains invalid characters: {:?}", + key + ))); + } + if value.contains('\0') { + return Err(type_error(format!( + "Value contains invalid characters: {:?}", + value + ))); } env::set_var(key, value); Ok(()) @@ -108,9 +118,17 @@ fn op_get_env( state.borrow_mut::<Permissions>().env.check(&key)?; } - if key.is_empty() || key.contains(&['=', '\0'] as &[char]) { - return Err(type_error("Key contains invalid characters.")); + if key.is_empty() { + return Err(type_error("Key is an empty string.")); } + + if key.contains(&['=', '\0'] as &[char]) { + return Err(type_error(format!( + "Key contains invalid characters: {:?}", + key + ))); + } + let r = match env::var(key) { Err(env::VarError::NotPresent) => None, v => Some(v?), |