From 635ad2a18ecd26690e611f54062ae899fe307f96 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Sun, 14 Apr 2019 02:27:27 +0900 Subject: fix absolute path resolution from remote (#2109) --- cli/deno_dir.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'cli') 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); @@ -1674,6 +1676,26 @@ mod tests { assert_eq!(filename, expected_filename); } + #[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(); -- cgit v1.2.3