summaryrefslogtreecommitdiff
path: root/cli/deno_error.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-06-25 22:14:36 +0200
committerBert Belder <bertbelder@gmail.com>2019-07-08 13:07:32 +0200
commit72d9045528ad69ec32d7de9707cea65fab9f405e (patch)
tree7492b1109462be8512269a2a7041c02f4038e56e /cli/deno_error.rs
parent9b1997b8b6f82e17e42c43aae3621e2b932f5843 (diff)
cli: refactor deno_dir to use Url instead of String
Diffstat (limited to 'cli/deno_error.rs')
-rw-r--r--cli/deno_error.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/cli/deno_error.rs b/cli/deno_error.rs
index 6f11a6879..0410c35d2 100644
--- a/cli/deno_error.rs
+++ b/cli/deno_error.rs
@@ -1,4 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+use crate::deno_dir;
use crate::diagnostics;
use crate::fmt_errors::JSErrorColor;
use crate::import_map;
@@ -34,6 +35,7 @@ enum Repr {
ModuleResolutionErr(ModuleResolutionError),
Diagnostic(diagnostics::Diagnostic),
JSError(JSError),
+ DenoDirErr(deno_dir::DenoDirError),
}
/// Create a new simple DenoError.
@@ -116,6 +118,7 @@ impl DenoError {
}
Repr::Diagnostic(ref _err) => ErrorKind::Diagnostic,
Repr::JSError(ref _err) => ErrorKind::JSError,
+ Repr::DenoDirErr(ref _err) => ErrorKind::DenoDirError,
}
}
@@ -141,6 +144,7 @@ impl fmt::Display for DenoError {
Repr::ModuleResolutionErr(ref err) => err.fmt(f),
Repr::Diagnostic(ref err) => err.fmt(f),
Repr::JSError(ref err) => JSErrorColor(err).fmt(f),
+ Repr::DenoDirErr(ref err) => err.fmt(f),
}
}
}
@@ -156,6 +160,7 @@ impl std::error::Error for DenoError {
Repr::ModuleResolutionErr(ref err) => err.description(),
Repr::Diagnostic(ref err) => &err.items[0].message,
Repr::JSError(ref err) => &err.description(),
+ Repr::DenoDirErr(ref err) => err.description(),
}
}
@@ -169,6 +174,7 @@ impl std::error::Error for DenoError {
Repr::ModuleResolutionErr(ref err) => err.source(),
Repr::Diagnostic(ref _err) => None,
Repr::JSError(ref err) => Some(err),
+ Repr::DenoDirErr(ref err) => Some(err),
}
}
}
@@ -256,6 +262,14 @@ impl From<import_map::ImportMapError> for DenoError {
}
}
+impl From<deno_dir::DenoDirError> for DenoError {
+ fn from(err: deno_dir::DenoDirError) -> Self {
+ Self {
+ repr: Repr::DenoDirErr(err),
+ }
+ }
+}
+
impl From<ModuleResolutionError> for DenoError {
fn from(err: ModuleResolutionError) -> Self {
Self {
@@ -334,6 +348,8 @@ pub fn err_check<R>(r: Result<R, DenoError>) {
mod tests {
use super::*;
use crate::ansi::strip_ansi_codes;
+ use crate::deno_dir::DenoDirError;
+ use crate::deno_dir::DenoDirErrorKind;
use crate::diagnostics::Diagnostic;
use crate::diagnostics::DiagnosticCategory;
use crate::diagnostics::DiagnosticItem;
@@ -450,6 +466,13 @@ mod tests {
}
}
+ fn deno_dir_error() -> DenoDirError {
+ DenoDirError::new(
+ "a deno dir error".to_string(),
+ DenoDirErrorKind::UnsupportedFetchScheme,
+ )
+ }
+
#[test]
fn test_simple_error() {
let err = new(ErrorKind::NoError, "foo".to_string());
@@ -495,6 +518,13 @@ mod tests {
}
#[test]
+ fn test_deno_dir_error() {
+ let err = DenoError::from(deno_dir_error());
+ assert_eq!(err.kind(), ErrorKind::DenoDirError);
+ assert_eq!(err.to_string(), "a deno dir error\n");
+ }
+
+ #[test]
fn test_bad_resource() {
let err = bad_resource();
assert_eq!(err.kind(), ErrorKind::BadResource);