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 {
|
||||
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)]
|
||||
mod tests {
|
||||
use std::env;
|
||||
use std::error::Error as StdError;
|
||||
use std::io;
|
||||
use httparse;
|
||||
use http::{StatusCode, Error as HttpError};
|
||||
use cookie::ParseError as CookieParseError;
|
||||
use failure;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
|
@ -795,4 +797,18 @@ mod tests {
|
|||
from!(httparse::Error::TooManyHeaders => ParseError::TooLarge);
|
||||
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