From ed535a362bcdfa9b77c4750d846f064784acc52d Mon Sep 17 00:00:00 2001 From: Scott Schafer Date: Wed, 27 Aug 2025 18:21:24 -0600 Subject: [PATCH 1/2] test: Primary title used second group --- tests/color/main.rs | 1 + tests/color/primary_title_second_group.rs | 25 +++++++++++ .../color/primary_title_second_group.term.svg | 41 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 tests/color/primary_title_second_group.rs create mode 100644 tests/color/primary_title_second_group.term.svg diff --git a/tests/color/main.rs b/tests/color/main.rs index fe088acf..4faaf28d 100644 --- a/tests/color/main.rs +++ b/tests/color/main.rs @@ -12,6 +12,7 @@ mod fold_trailing; mod issue_9; mod multiline_removal_suggestion; mod multiple_annotations; +mod primary_title_second_group; mod simple; mod strip_line; mod strip_line_char; diff --git a/tests/color/primary_title_second_group.rs b/tests/color/primary_title_second_group.rs new file mode 100644 index 00000000..dfab58d0 --- /dev/null +++ b/tests/color/primary_title_second_group.rs @@ -0,0 +1,25 @@ +use annotate_snippets::{AnnotationKind, Group, Level, Renderer, Snippet}; + +use snapbox::{assert_data_eq, file}; + +#[test] +fn case() { + let report = + &[ + Group::with_title(Level::ERROR.primary_title("mismatched types").id("E0308")).element( + Snippet::source(" slices: vec![\"A\",") + .line_start(13) + .path("src/multislice.rs") + .annotation(AnnotationKind::Primary.span(21..24).label( + "expected struct `annotate_snippets::snippet::Slice`, found reference", + )), + ), + Group::with_title(Level::NOTE.primary_title( + "expected type: `snippet::Annotation`\n found type: `__&__snippet::Annotation`", + )), + ]; + + let expected = file!["primary_title_second_group.term.svg"]; + let renderer = Renderer::styled(); + assert_data_eq!(renderer.render(report), expected); +} diff --git a/tests/color/primary_title_second_group.term.svg b/tests/color/primary_title_second_group.term.svg new file mode 100644 index 00000000..797bbdf5 --- /dev/null +++ b/tests/color/primary_title_second_group.term.svg @@ -0,0 +1,41 @@ + + + + + + + error[E0308]: mismatched types + + --> src/multislice.rs:13:22 + + | + + 13 | slices: vec!["A", + + | ^^^ expected struct `annotate_snippets::snippet::Slice`, found reference + + | + + note: expected type: `snippet::Annotation` + + found type: `__&__snippet::Annotation` + + + + From 62f900d15b599c4869071ae64a83cf38fdbd4ef9 Mon Sep 17 00:00:00 2001 From: Scott Schafer Date: Wed, 27 Aug 2025 18:21:24 -0600 Subject: [PATCH 2/2] fix: Always style primary_title --- src/renderer/mod.rs | 6 +++--- tests/color/primary_title_second_group.term.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 0815cdcf..25e9508b 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -219,10 +219,10 @@ impl Renderer { let mut message_iter = group.elements.iter().enumerate().peekable(); if let Some(title) = &group.title { let peek = message_iter.peek().map(|(_, s)| s).copied(); - let title_style = if g == 0 { - TitleStyle::MainHeader - } else { + let title_style = if title.allows_styling { TitleStyle::Header + } else { + TitleStyle::MainHeader }; let buffer_msg_line_offset = buffer.num_lines(); self.render_title( diff --git a/tests/color/primary_title_second_group.term.svg b/tests/color/primary_title_second_group.term.svg index 797bbdf5..56035a31 100644 --- a/tests/color/primary_title_second_group.term.svg +++ b/tests/color/primary_title_second_group.term.svg @@ -32,9 +32,9 @@ | - note: expected type: `snippet::Annotation` + note: expected type: `snippet::Annotation` - found type: `__&__snippet::Annotation` + found type: `__&__snippet::Annotation`