summaryrefslogtreecommitdiff
path: root/cli/deno_dir.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/deno_dir.rs')
-rw-r--r--cli/deno_dir.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/cli/deno_dir.rs b/cli/deno_dir.rs
index b0af7b04c..69496b701 100644
--- a/cli/deno_dir.rs
+++ b/cli/deno_dir.rs
@@ -284,7 +284,9 @@ impl DenoDir {
referrer = referrer_path.to_str().unwrap().to_string() + "/";
}
- let j = if is_remote(&specifier) || Path::new(&specifier).is_absolute() {
+ let j = if is_remote(&specifier)
+ || (Path::new(&specifier).is_absolute() && !is_remote(&referrer))
+ {
parse_local_or_remote(&specifier)?
} else if referrer.ends_with('/') {
let r = Url::from_directory_path(&referrer);
@@ -1675,6 +1677,26 @@ mod tests {
}
#[test]
+ fn test_resolve_module_8() {
+ let (_temp_dir, deno_dir) = test_setup();
+
+ let specifier = "/util";
+ let referrer_ =
+ deno_dir.deps_https.join("unpkg.com/liltest@0.0.5/index.ts");
+ let referrer = referrer_.to_str().unwrap();
+
+ let expected_module_name = "https://unpkg.com/util";
+ let expected_filename = deno_fs::normalize_path(
+ deno_dir.deps_https.join("unpkg.com/util").as_ref(),
+ );
+
+ let (module_name, filename) =
+ deno_dir.resolve_module(specifier, referrer).unwrap();
+ assert_eq!(module_name, expected_module_name);
+ assert_eq!(filename, expected_filename);
+ }
+
+ #[test]
fn test_resolve_module_referrer_dot() {
let (_temp_dir, deno_dir) = test_setup();