diff options
Diffstat (limited to 'subprojects/thiserror/tests/test_source.rs')
| -rw-r--r-- | subprojects/thiserror/tests/test_source.rs | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/subprojects/thiserror/tests/test_source.rs b/subprojects/thiserror/tests/test_source.rs deleted file mode 100644 index 29968be..0000000 --- a/subprojects/thiserror/tests/test_source.rs +++ /dev/null @@ -1,82 +0,0 @@ -use std::error::Error as StdError; -use std::io; -use thiserror::Error; - -#[derive(Error, Debug)] -#[error("implicit source")] -pub struct ImplicitSource { - source: io::Error, -} - -#[derive(Error, Debug)] -#[error("explicit source")] -pub struct ExplicitSource { - source: String, - #[source] - io: io::Error, -} - -#[derive(Error, Debug)] -#[error("boxed source")] -pub struct BoxedSource { - #[source] - source: Box<dyn StdError + Send + 'static>, -} - -#[test] -fn test_implicit_source() { - let io = io::Error::new(io::ErrorKind::Other, "oh no!"); - let error = ImplicitSource { source: io }; - error.source().unwrap().downcast_ref::<io::Error>().unwrap(); -} - -#[test] -fn test_explicit_source() { - let io = io::Error::new(io::ErrorKind::Other, "oh no!"); - let error = ExplicitSource { - source: String::new(), - io, - }; - error.source().unwrap().downcast_ref::<io::Error>().unwrap(); -} - -#[test] -fn test_boxed_source() { - let source = Box::new(io::Error::new(io::ErrorKind::Other, "oh no!")); - let error = BoxedSource { source }; - error.source().unwrap().downcast_ref::<io::Error>().unwrap(); -} - -macro_rules! error_from_macro { - ($($variants:tt)*) => { - #[derive(Error)] - #[derive(Debug)] - pub enum MacroSource { - $($variants)* - } - } -} - -// Test that we generate impls with the proper hygiene -#[rustfmt::skip] -error_from_macro! { - #[error("Something")] - Variant(#[from] io::Error) -} - -#[test] -fn test_not_source() { - #[derive(Error, Debug)] - #[error("{source} ==> {destination}")] - pub struct NotSource { - r#source: char, - destination: char, - } - - let error = NotSource { - source: 'S', - destination: 'D', - }; - assert_eq!(error.to_string(), "S ==> D"); - assert!(error.source().is_none()); -} |
