Blame third_party/rust/error-chain/tests/tests.rs

Packit f0b94e
#![allow(dead_code)]
Packit f0b94e
Packit f0b94e
#[macro_use]
Packit f0b94e
extern crate error_chain;
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_1() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors { }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_2() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types { }
Packit f0b94e
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors { }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_3() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors { }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_4() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code")
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_5() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types { }
Packit f0b94e
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code")
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_6() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code")
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_7() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code")
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn smoke_test_8() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types { }
Packit f0b94e
Packit f0b94e
        links { }
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            FileNotFound
Packit f0b94e
            AccessDenied
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_1() {
Packit f0b94e
    error_chain! { types { } links { } foreign_links { } errors { } };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_2() {
Packit f0b94e
    error_chain! { links { } types { } foreign_links { } errors { } };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_3() {
Packit f0b94e
    error_chain! { foreign_links { }  links { }  errors { } types { } };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_4() {
Packit f0b94e
    error_chain! { errors { } types { } foreign_links { } };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_5() {
Packit f0b94e
    error_chain! { foreign_links { } types { }  };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_6() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code")
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_7() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn order_test_8() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn empty() {
Packit f0b94e
    error_chain!{};
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
#[cfg(feature = "backtrace")]
Packit f0b94e
fn has_backtrace_depending_on_env() {
Packit f0b94e
    use std::process::Command;
Packit f0b94e
    use std::path::Path;
Packit f0b94e
Packit f0b94e
    let cmd_path = if cfg!(windows) {
Packit f0b94e
        Path::new("./target/debug/has_backtrace.exe")
Packit f0b94e
    } else {
Packit f0b94e
        Path::new("./target/debug/has_backtrace")
Packit f0b94e
    };
Packit f0b94e
    let mut cmd = Command::new(cmd_path);
Packit f0b94e
Packit f0b94e
    // missing RUST_BACKTRACE and RUST_BACKTRACE=0
Packit f0b94e
    cmd.env_remove("RUST_BACKTRACE");
Packit f0b94e
    assert_eq!(cmd.status().unwrap().code().unwrap(), 0);
Packit f0b94e
Packit f0b94e
    cmd.env("RUST_BACKTRACE", "0");
Packit f0b94e
    assert_eq!(cmd.status().unwrap().code().unwrap(), 0);
Packit f0b94e
Packit f0b94e
    // RUST_BACKTRACE set to anything but 0
Packit f0b94e
    cmd.env("RUST_BACKTRACE", "yes");
Packit f0b94e
    assert_eq!(cmd.status().unwrap().code().unwrap(), 1);
Packit f0b94e
Packit f0b94e
    cmd.env("RUST_BACKTRACE", "1");
Packit f0b94e
    assert_eq!(cmd.status().unwrap().code().unwrap(), 1);
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn chain_err() {
Packit f0b94e
    use std::fmt;
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        foreign_links {
Packit f0b94e
            Fmt(fmt::Error);
Packit f0b94e
        }
Packit f0b94e
        errors {
Packit f0b94e
            Test
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    let _: Result<()> = Err(fmt::Error).chain_err(|| "");
Packit f0b94e
    let _: Result<()> = Err(Error::from_kind(ErrorKind::Test)).chain_err(|| "");
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
/// Verify that an error chain is extended one by `Error::chain_err`, with
Packit f0b94e
/// the new error added to the end.
Packit f0b94e
#[test]
Packit f0b94e
fn error_chain_err() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        errors {
Packit f0b94e
            Test
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    let base = Error::from(ErrorKind::Test);
Packit f0b94e
    let ext = base.chain_err(|| "Test passes");
Packit f0b94e
Packit f0b94e
    if let Error(ErrorKind::Msg(_), _) = ext {
Packit f0b94e
        // pass
Packit f0b94e
    } else {
Packit f0b94e
        panic!("The error should be wrapped. {:?}", ext);
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn links() {
Packit f0b94e
    mod test {
Packit f0b94e
        error_chain!{}
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        links {
Packit f0b94e
            Test(test::Error, test::ErrorKind);
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[cfg(test)]
Packit f0b94e
mod foreign_link_test {
Packit f0b94e
Packit f0b94e
    use std::fmt;
Packit f0b94e
Packit f0b94e
    // Note: foreign errors must be `pub` because they appear in the
Packit f0b94e
    // signature of the public foreign_link_error_path
Packit f0b94e
    #[derive(Debug)]
Packit f0b94e
    pub struct ForeignError {
Packit f0b94e
        cause: ForeignErrorCause,
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    impl ::std::error::Error for ForeignError {
Packit f0b94e
        fn description(&self) -> &'static str {
Packit f0b94e
            "Foreign error description"
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        fn cause(&self) -> Option<&::std::error::Error> {
Packit f0b94e
            Some(&self.cause)
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    impl fmt::Display for ForeignError {
Packit f0b94e
        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
Packit f0b94e
            write!(formatter, "Foreign error display")
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    #[derive(Debug)]
Packit f0b94e
    pub struct ForeignErrorCause {}
Packit f0b94e
Packit f0b94e
    impl ::std::error::Error for ForeignErrorCause {
Packit f0b94e
        fn description(&self) -> &'static str {
Packit f0b94e
            "Foreign error cause description"
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        fn cause(&self) -> Option<&::std::error::Error> {
Packit f0b94e
            None
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    impl fmt::Display for ForeignErrorCause {
Packit f0b94e
        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
Packit f0b94e
            write!(formatter, "Foreign error cause display")
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        types{
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
        links {}
Packit f0b94e
        foreign_links {
Packit f0b94e
            Foreign(ForeignError);
Packit f0b94e
            Io(::std::io::Error);
Packit f0b94e
        }
Packit f0b94e
        errors {}
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    #[test]
Packit f0b94e
    fn display_underlying_error() {
Packit f0b94e
        let chained_error = try_foreign_error().err().unwrap();
Packit f0b94e
        assert_eq!(format!("{}", ForeignError { cause: ForeignErrorCause {} }),
Packit f0b94e
                   format!("{}", chained_error));
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    #[test]
Packit f0b94e
    fn finds_cause() {
Packit f0b94e
        let chained_error = try_foreign_error().err().unwrap();
Packit f0b94e
        assert_eq!(format!("{}", ForeignErrorCause {}),
Packit f0b94e
                   format!("{}", ::std::error::Error::cause(&chained_error).unwrap()));
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    #[test]
Packit f0b94e
    fn iterates() {
Packit f0b94e
        let chained_error = try_foreign_error().err().unwrap();
Packit f0b94e
        let mut error_iter = chained_error.iter();
Packit f0b94e
        assert!(!format!("{:?}", error_iter).is_empty());
Packit f0b94e
        assert_eq!(format!("{}", ForeignError { cause: ForeignErrorCause {} }),
Packit f0b94e
                   format!("{}", error_iter.next().unwrap()));
Packit f0b94e
        assert_eq!(format!("{}", ForeignErrorCause {}),
Packit f0b94e
                   format!("{}", error_iter.next().unwrap()));
Packit f0b94e
        assert_eq!(format!("{:?}", None as Option<&::std::error::Error>),
Packit f0b94e
                   format!("{:?}", error_iter.next()));
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    fn try_foreign_error() -> Result<()> {
Packit f0b94e
        Err(ForeignError { cause: ForeignErrorCause {} })?;
Packit f0b94e
        Ok(())
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[cfg(test)]
Packit f0b94e
mod attributes_test {
Packit f0b94e
    #[allow(unused_imports)]
Packit f0b94e
    use std::io;
Packit f0b94e
Packit f0b94e
    #[cfg(not(test))]
Packit f0b94e
    mod inner {
Packit f0b94e
        error_chain!{}
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        links {
Packit f0b94e
            Inner(inner::Error, inner::ErrorKind) #[cfg(not(test))];
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        foreign_links {
Packit f0b94e
            Io(io::Error) #[cfg(not(test))];
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            #[cfg(not(test))]
Packit f0b94e
            AnError {
Packit f0b94e
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn with_result() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt, Result;
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
    let _: Result<()> = Ok(());
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn without_result() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            Error, ErrorKind, ResultExt;
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
    let _: Result<(), ()> = Ok(());
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn documentation() {
Packit f0b94e
    mod inner {
Packit f0b94e
        error_chain!{}
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        links {
Packit f0b94e
            Inner(inner::Error, inner::ErrorKind) #[doc = "Doc"];
Packit f0b94e
        }
Packit f0b94e
        foreign_links {
Packit f0b94e
            Io(::std::io::Error) #[doc = "Doc"];
Packit f0b94e
        }
Packit f0b94e
        errors {
Packit f0b94e
            /// Doc
Packit f0b94e
            Variant
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[cfg(test)]
Packit f0b94e
mod multiple_error_same_mod {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            MyError, MyErrorKind, MyResultExt, MyResult;
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
    error_chain!{}
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[doc(test)]
Packit f0b94e
#[deny(dead_code)]
Packit f0b94e
mod allow_dead_code {
Packit f0b94e
    error_chain!{}
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
// Make sure links actually work!
Packit f0b94e
#[test]
Packit f0b94e
fn rustup_regression() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links {
Packit f0b94e
            Download(error_chain::mock::Error, error_chain::mock::ErrorKind);
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            LocatingWorkingDir {
Packit f0b94e
                description("could not locate working directory")
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn error_patterns() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors { }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    // Tuples look nice when matching errors
Packit f0b94e
    match Error::from("Test") {
Packit f0b94e
        Error(ErrorKind::Msg(_), _) => {},
Packit f0b94e
        _ => {},
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn error_first() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        errors {
Packit f0b94e
            LocatingWorkingDir {
Packit f0b94e
                description("could not locate working directory")
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        links {
Packit f0b94e
            Download(error_chain::mock::Error, error_chain::mock::ErrorKind);
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn bail() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        errors { Foo }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    fn foo() -> Result<()> {
Packit f0b94e
        bail!(ErrorKind::Foo)
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    fn bar() -> Result<()> {
Packit f0b94e
        bail!("bar")
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    fn baz() -> Result<()> {
Packit f0b94e
        bail!("{}", "baz")
Packit f0b94e
    }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn ensure() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        errors { Bar }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    fn foo(x: u8) -> Result<()> {
Packit f0b94e
        ensure!(x == 42, ErrorKind::Bar);
Packit f0b94e
        Ok(())
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    assert!(foo(42).is_ok());
Packit f0b94e
    assert!(foo(0).is_err());
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
/// Since the `types` declaration is a list of symbols, check if we
Packit f0b94e
/// don't change their meaning or order.
Packit f0b94e
#[test]
Packit f0b94e
fn types_declarations() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        types {
Packit f0b94e
            MyError, MyErrorKind, MyResultExt, MyResult;
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    MyError::from_kind(MyErrorKind::Msg("".into()));
Packit f0b94e
Packit f0b94e
    let err: Result<(), ::std::io::Error> = Ok(());
Packit f0b94e
    MyResultExt::chain_err(err, || "").unwrap();
Packit f0b94e
Packit f0b94e
    let _: MyResult<()> = Ok(());
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
/// Calling chain_err over a `Result` containing an error to get a chained error
Packit f0b94e
/// and constructing a MyError directly, passing it an error should be equivalent.
Packit f0b94e
fn rewrapping() {
Packit f0b94e
Packit f0b94e
    use std::env::VarError::{self, NotPresent, NotUnicode};
Packit f0b94e
Packit f0b94e
    error_chain! {
Packit f0b94e
        foreign_links {
Packit f0b94e
            VarErr(VarError);
Packit f0b94e
        }
Packit f0b94e
Packit f0b94e
        types {
Packit f0b94e
            MyError, MyErrorKind, MyResultExt, MyResult;
Packit f0b94e
        }
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    let result_a_from_func: Result<String, _> = Err(VarError::NotPresent);
Packit f0b94e
    let result_b_from_func: Result<String, _> = Err(VarError::NotPresent);
Packit f0b94e
Packit f0b94e
    let our_error_a = result_a_from_func.map_err(|e| match e {
Packit f0b94e
        NotPresent => MyError::with_chain(e, "env var wasn't provided"),
Packit f0b94e
        NotUnicode(_) => MyError::with_chain(e, "env var was bork文字化ã"),
Packit f0b94e
    });
Packit f0b94e
Packit f0b94e
    let our_error_b = result_b_from_func.or_else(|e| match e {
Packit f0b94e
        NotPresent => Err(e).chain_err(|| "env var wasn't provided"),
Packit f0b94e
        NotUnicode(_) => Err(e).chain_err(|| "env var was bork文字化ã"),
Packit f0b94e
    });
Packit f0b94e
Packit f0b94e
    assert_eq!(format!("{}", our_error_a.unwrap_err()),
Packit f0b94e
               format!("{}", our_error_b.unwrap_err()));
Packit f0b94e
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn comma_in_errors_impl() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code"),
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e)
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
Packit f0b94e
#[test]
Packit f0b94e
fn trailing_comma_in_errors_impl() {
Packit f0b94e
    error_chain! {
Packit f0b94e
        links { }
Packit f0b94e
Packit f0b94e
        foreign_links { }
Packit f0b94e
Packit f0b94e
        errors {
Packit f0b94e
            HttpStatus(e: u32) {
Packit f0b94e
                description("http request returned an unsuccessful status code"),
Packit f0b94e
                display("http request returned an unsuccessful status code: {}", e),
Packit f0b94e
            }
Packit f0b94e
        }
Packit f0b94e
    };
Packit f0b94e
}