Add more tests for diagnostic_source

This commit is contained in:
Marcel Müller 2022-05-06 07:59:48 +02:00
parent 0a4cf4ad24
commit 8ba24da443
1 changed files with 43 additions and 2 deletions

View File

@ -6,15 +6,56 @@ struct AnErr;
#[derive(Debug, miette::Diagnostic, thiserror::Error)] #[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("TestError")] #[error("TestError")]
struct TestError { struct TestStructError {
#[diagnostic_source] #[diagnostic_source]
asdf_inner_foo: AnErr, asdf_inner_foo: AnErr,
} }
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("TestError")]
enum TestEnumError {
Without,
WithTuple(#[diagnostic_source] AnErr),
WithStruct {
#[diagnostic_source]
inner: AnErr,
},
}
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("TestError")]
struct TestTupleError(#[diagnostic_source] AnErr);
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("TestError")]
struct TestBoxedError(#[diagnostic_source] Box<dyn Diagnostic>);
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("TestError")]
struct TestArcedError(#[diagnostic_source] std::sync::Arc<dyn Diagnostic>);
#[test] #[test]
fn test_diagnostic_source() { fn test_diagnostic_source() {
let error = TestError { let error = TestStructError {
asdf_inner_foo: AnErr, asdf_inner_foo: AnErr,
}; };
assert!(error.diagnostic_source().is_some()); assert!(error.diagnostic_source().is_some());
let error = TestEnumError::Without;
assert!(error.diagnostic_source().is_none());
let error = TestEnumError::WithTuple(AnErr);
assert!(error.diagnostic_source().is_some());
let error = TestEnumError::WithStruct { inner: AnErr };
assert!(error.diagnostic_source().is_some());
let error = TestTupleError(AnErr);
assert!(error.diagnostic_source().is_some());
let error = TestBoxedError(Box::new(AnErr));
assert!(error.diagnostic_source().is_some());
let error = TestArcedError(std::sync::Arc::new(AnErr));
assert!(error.diagnostic_source().is_some());
} }