mirror of
https://github.com/denoland/deno.git
synced 2024-11-28 16:20:57 -05:00
Propagate Url::to_file_path() errors instead of panicking (#2771)
* Propagate Url::to_file_path() errors instead of panicking
This commit is contained in:
parent
9bd473d8ac
commit
c3afa55751
1 changed files with 20 additions and 1 deletions
|
@ -213,7 +213,12 @@ impl SourceFileFetcher {
|
||||||
self: &Self,
|
self: &Self,
|
||||||
module_url: &Url,
|
module_url: &Url,
|
||||||
) -> Result<SourceFile, ErrBox> {
|
) -> Result<SourceFile, ErrBox> {
|
||||||
let filepath = module_url.to_file_path().expect("File URL expected");
|
let filepath = module_url.to_file_path().map_err(|()| {
|
||||||
|
ErrBox::from(DenoError::new(
|
||||||
|
ErrorKind::InvalidPath,
|
||||||
|
"File URL contains invalid path".to_owned(),
|
||||||
|
))
|
||||||
|
})?;
|
||||||
|
|
||||||
let source_code = match fs::read(filepath.clone()) {
|
let source_code = match fs::read(filepath.clone()) {
|
||||||
Ok(c) => c,
|
Ok(c) => c,
|
||||||
|
@ -716,6 +721,20 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_fetch_local_file_no_panic() {
|
||||||
|
let (_temp_dir, fetcher) = test_setup();
|
||||||
|
if cfg!(windows) {
|
||||||
|
// Should fail: missing drive letter.
|
||||||
|
let u = Url::parse("file:///etc/passwd").unwrap();
|
||||||
|
fetcher.fetch_local_file(&u).unwrap_err();
|
||||||
|
} else {
|
||||||
|
// Should fail: local network paths are not supported on unix.
|
||||||
|
let u = Url::parse("file://server/etc/passwd").unwrap();
|
||||||
|
fetcher.fetch_local_file(&u).unwrap_err();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_source_code_1() {
|
fn test_get_source_code_1() {
|
||||||
let (temp_dir, fetcher) = test_setup();
|
let (temp_dir, fetcher) = test_setup();
|
||||||
|
|
Loading…
Reference in a new issue