summaryrefslogtreecommitdiff
path: root/cli/disk_cache.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/disk_cache.rs')
-rw-r--r--cli/disk_cache.rs29
1 files changed, 28 insertions, 1 deletions
diff --git a/cli/disk_cache.rs b/cli/disk_cache.rs
index 81b86c0ae..3cc3b16f3 100644
--- a/cli/disk_cache.rs
+++ b/cli/disk_cache.rs
@@ -69,7 +69,10 @@ impl DiskCache {
}
"http" | "https" => out = url_to_filename(url),
"file" => {
- let path = url.to_file_path().unwrap();
+ let path = match url.to_file_path() {
+ Ok(path) => path,
+ Err(_) => return None,
+ };
let mut path_components = path.components();
if cfg!(target_os = "windows") {
@@ -278,4 +281,28 @@ mod tests {
)
}
}
+
+ #[test]
+ fn test_get_cache_filename_invalid_urls() {
+ let cache_location = if cfg!(target_os = "windows") {
+ PathBuf::from(r"C:\deno_dir\")
+ } else {
+ PathBuf::from("/deno_dir/")
+ };
+
+ let cache = DiskCache::new(&cache_location);
+
+ let mut test_cases = vec!["unknown://localhost/test.ts"];
+
+ if cfg!(target_os = "windows") {
+ test_cases.push("file://");
+ test_cases.push("file:///");
+ }
+
+ for test_case in &test_cases {
+ let cache_filename =
+ cache.get_cache_filename(&Url::parse(test_case).unwrap());
+ assert_eq!(cache_filename, None);
+ }
+ }
}