mirror of https://github.com/fafhrd91/actix-web
take advantage of the existing `From<T: ResponseError> for Error` in the implementation of `From<failure::Error>`.
This is better because it's re-using code, but also because my backtrace-handling was buggy.
This commit is contained in:
parent
c16062d6bc
commit
848a83ee70
18
src/error.rs
18
src/error.rs
|
@ -102,7 +102,7 @@ impl<T> ResponseError for failure::Compat<T>
|
||||||
|
|
||||||
impl From<failure::Error> for Error {
|
impl From<failure::Error> for Error {
|
||||||
fn from(err: failure::Error) -> Error {
|
fn from(err: failure::Error) -> Error {
|
||||||
Error { cause: Box::new(err.compat()), backtrace: None }
|
err.compat().into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,11 +662,13 @@ pub fn ErrorInternalServerError<T>(err: T) -> InternalError<T> {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use std::env;
|
||||||
use std::error::Error as StdError;
|
use std::error::Error as StdError;
|
||||||
use std::io;
|
use std::io;
|
||||||
use httparse;
|
use httparse;
|
||||||
use http::{StatusCode, Error as HttpError};
|
use http::{StatusCode, Error as HttpError};
|
||||||
use cookie::ParseError as CookieParseError;
|
use cookie::ParseError as CookieParseError;
|
||||||
|
use failure;
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -795,4 +797,18 @@ mod tests {
|
||||||
from!(httparse::Error::TooManyHeaders => ParseError::TooLarge);
|
from!(httparse::Error::TooManyHeaders => ParseError::TooLarge);
|
||||||
from!(httparse::Error::Version => ParseError::Version);
|
from!(httparse::Error::Version => ParseError::Version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn failure_error() {
|
||||||
|
const NAME: &str = "RUST_BACKTRACE";
|
||||||
|
let old_tb = env::var(NAME);
|
||||||
|
env::set_var(NAME, "0");
|
||||||
|
let error = failure::err_msg("Hello!");
|
||||||
|
let resp: Error = error.into();
|
||||||
|
assert_eq!(format!("{:?}", resp), "Compat { error: ErrorMessage { msg: \"Hello!\" } }\n\n");
|
||||||
|
match old_tb {
|
||||||
|
Ok(x) => env::set_var(NAME, x),
|
||||||
|
_ => env::remove_var(NAME),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue