summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/fs_util.rs4
-rw-r--r--cli/tests/dont_panic_not_found_cwd.ts3
-rw-r--r--cli/tests/integration_tests.rs19
-rw-r--r--cli/tools/installer.rs4
4 files changed, 28 insertions, 2 deletions
diff --git a/cli/fs_util.rs b/cli/fs_util.rs
index 584d62598..a862e4bd3 100644
--- a/cli/fs_util.rs
+++ b/cli/fs_util.rs
@@ -1,6 +1,7 @@
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
use deno_core::error::AnyError;
+use deno_core::error::Context;
pub use deno_core::normalize_path;
use deno_runtime::deno_crypto::rand;
use std::env::current_dir;
@@ -81,7 +82,8 @@ pub fn resolve_from_cwd(path: &Path) -> Result<PathBuf, AnyError> {
let resolved_path = if path.is_absolute() {
path.to_owned()
} else {
- let cwd = current_dir().unwrap();
+ let cwd =
+ current_dir().context("Failed to get current working directory")?;
cwd.join(path)
};
diff --git a/cli/tests/dont_panic_not_found_cwd.ts b/cli/tests/dont_panic_not_found_cwd.ts
new file mode 100644
index 000000000..e5ae1dfa4
--- /dev/null
+++ b/cli/tests/dont_panic_not_found_cwd.ts
@@ -0,0 +1,3 @@
+const dir = Deno.makeTempDirSync();
+Deno.chdir(dir);
+Deno.removeSync(dir);
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index d178512c5..28d2dc7c6 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -5144,6 +5144,25 @@ console.log("finish");
assert!(stderr.contains("BadResource"));
}
+ #[cfg(not(windows))]
+ #[test]
+ fn should_not_panic_on_not_found_cwd() {
+ let output = util::deno_cmd()
+ .current_dir(util::root_path())
+ .arg("run")
+ .arg("--allow-write")
+ .arg("--allow-read")
+ .arg("cli/tests/dont_panic_not_found_cwd.ts")
+ .stderr(std::process::Stdio::piped())
+ .spawn()
+ .unwrap()
+ .wait_with_output()
+ .unwrap();
+ assert!(!output.status.success());
+ let stderr = std::str::from_utf8(&output.stderr).unwrap().trim();
+ assert!(stderr.contains("Failed to get current working directory"));
+ }
+
#[cfg(windows)]
// Clippy suggests to remove the `NoStd` prefix from all variants. I disagree.
#[allow(clippy::enum_variant_names)]
diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs
index 747d9cbc0..48e3b8fdd 100644
--- a/cli/tools/installer.rs
+++ b/cli/tools/installer.rs
@@ -3,6 +3,7 @@ use crate::flags::Flags;
use crate::fs_util::canonicalize_path;
use deno_core::error::generic_error;
use deno_core::error::AnyError;
+use deno_core::error::Context;
use deno_core::url::Url;
use log::Level;
use regex::Regex;
@@ -175,7 +176,8 @@ pub fn install(
let module_path = if module_path.is_absolute() {
module_path
} else {
- let cwd = env::current_dir().unwrap();
+ let cwd = env::current_dir()
+ .context("Failed to get current working directory")?;
cwd.join(module_path)
};
Url::from_file_path(module_path).expect("Path should be absolute")