Add test verifying diagnostic

This commit is contained in:
Marcel Müller 2022-05-06 09:03:58 +02:00
parent 3914726ddb
commit 1643cabd95
1 changed files with 42 additions and 0 deletions

View File

@ -1,5 +1,16 @@
use miette::Diagnostic;
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("A complex error happened")]
struct SourceError {
#[source_code]
code: String,
#[help]
help: String,
#[label("here")]
label: (usize, usize),
}
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("AnErr")]
struct AnErr;
@ -59,3 +70,34 @@ fn test_diagnostic_source() {
let error = TestArcedError(std::sync::Arc::new(AnErr));
assert!(error.diagnostic_source().is_some());
}
#[test]
fn test_diagnostic_source_pass_extra_info() {
let diag = TestBoxedError(Box::new(SourceError {
code: String::from("Hello\nWorld!"),
help: format!("Have you tried turning it on and off again?"),
label: (1, 4),
}));
let mut out = String::new();
miette::GraphicalReportHandler::new_themed(miette::GraphicalTheme::unicode_nocolor())
.with_width(80)
.with_footer("this is a footer".into())
.render_report(&mut out, &diag)
.unwrap();
println!("Error: {}", out);
let expected = r#" × TestError
× A complex error happened
[1:1]
1 Hello
·
· here
2 World!
help: Have you tried turning it on and off again?
this is a footer
"#
.to_string();
assert_eq!(expected, out);
}