Add test for optional backtrace

This commit is contained in:
David Tolnay 2019-10-12 16:14:07 -07:00
parent fac0a7aa0d
commit d9ed0fba49
No known key found for this signature in database
GPG key ID: F9BA143B95FF6D82

View file

@ -4,36 +4,98 @@
use std::backtrace::Backtrace; use std::backtrace::Backtrace;
use thiserror::Error; use thiserror::Error;
#[derive(Error, Debug)] pub mod structs {
#[error("...")] use super::*;
pub struct OptSourceNoBacktraceStruct {
#[source]
source: Option<anyhow::Error>,
}
#[derive(Error, Debug)] #[derive(Error, Debug)]
#[error("...")]
pub struct OptSourceAlwaysBacktraceStruct {
#[source]
source: Option<anyhow::Error>,
backtrace: Backtrace,
}
#[derive(Error, Debug)]
pub enum OptSourceNoBacktraceEnum {
#[error("...")] #[error("...")]
Test { pub struct OptSourceNoBacktrace {
#[source] #[source]
source: Option<anyhow::Error>, source: Option<anyhow::Error>,
}, }
}
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum OptSourceAlwaysBacktraceEnum {
#[error("...")] #[error("...")]
Test { pub struct OptSourceAlwaysBacktrace {
#[source] #[source]
source: Option<anyhow::Error>, source: Option<anyhow::Error>,
backtrace: Backtrace, backtrace: Backtrace,
}, }
#[derive(Error, Debug)]
#[error("...")]
pub struct NoSourceOptBacktrace {
#[backtrace]
backtrace: Option<Backtrace>,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct AlwaysSourceOptBacktrace {
source: anyhow::Error,
#[backtrace]
backtrace: Option<Backtrace>,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct OptSourceOptBacktrace {
#[source]
source: Option<anyhow::Error>,
#[backtrace]
backtrace: Option<Backtrace>,
}
}
pub mod enums {
use super::*;
#[derive(Error, Debug)]
pub enum OptSourceNoBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
},
}
#[derive(Error, Debug)]
pub enum OptSourceAlwaysBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
backtrace: Backtrace,
},
}
#[derive(Error, Debug)]
pub enum NoSourceOptBacktrace {
#[error("...")]
Test {
#[backtrace]
backtrace: Option<Backtrace>,
},
}
#[derive(Error, Debug)]
pub enum AlwaysSourceOptBacktrace {
#[error("...")]
Test {
source: anyhow::Error,
#[backtrace]
backtrace: Option<Backtrace>,
},
}
#[derive(Error, Debug)]
pub enum OptSourceOptBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
#[backtrace]
backtrace: Option<Backtrace>,
},
}
} }