Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/anstyle-svg/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ impl Term {
.unwrap();
writeln!(&mut buffer, r#" <style>"#).unwrap();
writeln!(&mut buffer, r#" .{FG} {{ fill: {fg_color} }}"#).unwrap();
writeln!(&mut buffer, r#" .{BG} {{ background: {bg_color} }}"#).unwrap();
writeln!(&mut buffer, r#" .{BG} {{ fill: {bg_color} }}"#).unwrap();
for (name, rgb) in color_styles(&elements, self.palette) {
if name.starts_with(FG_PREFIX) {
writeln!(&mut buffer, r#" .{name} {{ fill: {rgb} }}"#).unwrap();
Expand Down
97 changes: 97 additions & 0 deletions crates/anstyle-svg/tests/custom_background_color.html

Large diffs are not rendered by default.

153 changes: 153 additions & 0 deletions crates/anstyle-svg/tests/custom_background_color.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions crates/anstyle-svg/tests/custom_background_color.vte
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[38:2:131:148:150m 1 + [38:2:131:148:150m│ [38:2:249:38:114muse[38:2:248:248:242m anstyle::RgbColor;
[38:2:131:148:150m 2 + [38:2:131:148:150m│
[38:2:131:148:150m 3 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 4 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrainbow[38:2:248:248:242m() {
[38:2:131:148:150m 5 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rainbow.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 6 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 7 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rainbow.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 8 [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 9 [38:2:131:148:150m│
[38:2:131:148:150m 10 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 11 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrg_linus[38:2:248:248:242m() {
[38:2:131:148:150m 12 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rg_linus.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 13 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 14 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rg_linus.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 15 [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 16 [38:2:131:148:150m│
[38:2:131:148:150m 17 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 18 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mhyperlink_demo[38:2:248:248:242m() {
[38:2:131:148:150m 19 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 20 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 21 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 22 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 23 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"hyperlink-demo.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 24 [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 25 [38:2:131:148:150m│
[38:2:131:148:150m 26 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 27 + [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mcustom_background_color[38:2:248:248:242m() {
[38:2:131:148:150m 28 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/custom_background_color.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 29 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 30 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/custom_background_color.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 31 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new()
[38:2:131:148:150m 32 + [38:2:131:148:150m│ [38:2:248:248:242m .[38:2:102:217:239mbg_color[38:2:248:248:242m(anstyle::Color::Rgb(RgbColor([38:2:190:132:255m0x18[38:2:248:248:242m, [38:2:190:132:255m0x18[38:2:248:248:242m, [38:2:190:132:255m0x18[38:2:248:248:242m)))
[38:2:131:148:150m 33 + [38:2:131:148:150m│ [38:2:248:248:242m .[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 34 + [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(
[38:2:131:148:150m 35 + [38:2:131:148:150m│ [38:2:248:248:242m actual,
[38:2:131:148:150m 36 + [38:2:131:148:150m│ [38:2:248:248:242m snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"custom_background_color.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()
[38:2:131:148:150m 37 + [38:2:131:148:150m│ [38:2:248:248:242m );
[38:2:131:148:150m 38 + [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 39 + [38:2:131:148:150m│
[38:2:131:148:150m 40 + [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 41 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrainbow_html[38:2:248:248:242m() {
[38:2:131:148:150m 42 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rainbow.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 43 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 44 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rainbow.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 45 [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 46 [38:2:131:148:150m│
[38:2:131:148:150m 47 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 48 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrg_linus_html[38:2:248:248:242m() {
[38:2:131:148:150m 49 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rg_linus.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 50 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 51 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rg_linus.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 52 [38:2:131:148:150m│ [38:2:248:248:242m}
[38:2:131:148:150m 53 [38:2:131:148:150m│
[38:2:131:148:150m 54 [38:2:131:148:150m│ [38:2:248:248:242m#[test]
[38:2:131:148:150m 55 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mhyperlink_demo_html[38:2:248:248:242m() {
[38:2:131:148:150m 56 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 57 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 58 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m();
[38:2:131:148:150m 59 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput);
[38:2:131:148:150m 60 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"hyperlink-demo.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m());
[38:2:131:148:150m 61 [38:2:131:148:150m│ [38:2:248:248:242m}
2 changes: 1 addition & 1 deletion crates/anstyle-svg/tests/hyperlink-demo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion crates/anstyle-svg/tests/rainbow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion crates/anstyle-svg/tests/rg_linus.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions crates/anstyle-svg/tests/term.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use anstyle::RgbColor;

#[test]
fn rainbow() {
let input = std::fs::read_to_string("tests/rainbow.vte").unwrap();
Expand All @@ -21,6 +23,20 @@ fn hyperlink_demo() {
snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.svg": Text].raw());
}

#[test]
fn custom_background_color() {
let bytes = std::fs::read("tests/custom_background_color.vte").unwrap();
String::from_utf8(bytes).unwrap();
let input = std::fs::read_to_string("tests/custom_background_color.vte").unwrap();
let actual = anstyle_svg::Term::new()
.bg_color(anstyle::Color::Rgb(RgbColor(0x18, 0x18, 0x18)))
.render_svg(&input);
snapbox::assert_data_eq!(
actual,
snapbox::file!["custom_background_color.svg": Text].raw()
);
}

#[test]
fn rainbow_html() {
let input = std::fs::read_to_string("tests/rainbow.vte").unwrap();
Expand All @@ -43,3 +59,17 @@ fn hyperlink_demo_html() {
let actual = anstyle_svg::Term::new().render_html(&input);
snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.html": Text].raw());
}

#[test]
fn custom_background_color_html() {
let bytes = std::fs::read("tests/custom_background_color.vte").unwrap();
String::from_utf8(bytes).unwrap();
let input = std::fs::read_to_string("tests/custom_background_color.vte").unwrap();
let actual = anstyle_svg::Term::new()
.bg_color(anstyle::Color::Rgb(RgbColor(0x18, 0x18, 0x18)))
.render_html(&input);
snapbox::assert_data_eq!(
actual,
snapbox::file!["custom_background_color.html": Text].raw()
);
}
Loading