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)]
#[error("TestError")]
struct TestError {
struct TestStructError {
#[diagnostic_source]
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]
fn test_diagnostic_source() {
let error = TestError {
let error = TestStructError {
asdf_inner_foo: AnErr,
};
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());
}