diff --git a/Cargo.lock b/Cargo.lock
index a686b028..226775f0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -21,6 +21,7 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
name = "annotate-snippets"
version = "0.11.4"
dependencies = [
+ "annotate-snippets",
"anstream 0.6.15",
"anstyle",
"criterion",
diff --git a/Cargo.toml b/Cargo.toml
index 62ab3871..d3236865 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -28,6 +28,7 @@ anstyle = "1.0.4"
unicode-width = "0.1.11"
[dev-dependencies]
+annotate-snippets = { path = ".", features = ["testing-colors"] }
anstream = "0.6.13"
criterion = "0.5.1"
difference = "2.0.0"
diff --git a/tests/fixtures/color/ann_eof.svg b/tests/fixtures/color/ann_eof.svg
new file mode 100644
index 00000000..bb12aecf
--- /dev/null
+++ b/tests/fixtures/color/ann_eof.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/ann_eof.toml b/tests/fixtures/color/ann_eof.toml
similarity index 89%
rename from tests/fixtures/no-color/ann_eof.toml
rename to tests/fixtures/color/ann_eof.toml
index 313d2204..cee5f0fb 100644
--- a/tests/fixtures/no-color/ann_eof.toml
+++ b/tests/fixtures/color/ann_eof.toml
@@ -10,3 +10,6 @@ origin = "Cargo.toml"
label = ""
level = "Error"
range = [4, 4]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/ann_insertion.svg b/tests/fixtures/color/ann_insertion.svg
new file mode 100644
index 00000000..1f4b6a24
--- /dev/null
+++ b/tests/fixtures/color/ann_insertion.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/ann_insertion.toml b/tests/fixtures/color/ann_insertion.toml
similarity index 89%
rename from tests/fixtures/no-color/ann_insertion.toml
rename to tests/fixtures/color/ann_insertion.toml
index ffd2140b..bf7411ef 100644
--- a/tests/fixtures/no-color/ann_insertion.toml
+++ b/tests/fixtures/color/ann_insertion.toml
@@ -10,3 +10,6 @@ origin = "Cargo.toml"
label = "'d' belongs here"
level = "Error"
range = [2, 2]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/ann_multiline.svg b/tests/fixtures/color/ann_multiline.svg
new file mode 100644
index 00000000..91306914
--- /dev/null
+++ b/tests/fixtures/color/ann_multiline.svg
@@ -0,0 +1,42 @@
+
diff --git a/tests/fixtures/no-color/ann_multiline.toml b/tests/fixtures/color/ann_multiline.toml
similarity index 94%
rename from tests/fixtures/no-color/ann_multiline.toml
rename to tests/fixtures/color/ann_multiline.toml
index 671b5344..9d8c30f9 100644
--- a/tests/fixtures/no-color/ann_multiline.toml
+++ b/tests/fixtures/color/ann_multiline.toml
@@ -16,3 +16,6 @@ fold = false
label = "missing fields `lineno`, `content`"
level = "Error"
range = [31, 128]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/ann_multiline2.svg b/tests/fixtures/color/ann_multiline2.svg
new file mode 100644
index 00000000..97948a47
--- /dev/null
+++ b/tests/fixtures/color/ann_multiline2.svg
@@ -0,0 +1,40 @@
+
diff --git a/tests/fixtures/no-color/ann_multiline2.toml b/tests/fixtures/color/ann_multiline2.toml
similarity index 93%
rename from tests/fixtures/no-color/ann_multiline2.toml
rename to tests/fixtures/color/ann_multiline2.toml
index afb3aa9c..259d94b4 100644
--- a/tests/fixtures/no-color/ann_multiline2.toml
+++ b/tests/fixtures/color/ann_multiline2.toml
@@ -16,3 +16,6 @@ fold = false
label = "this should not be on separate lines"
level = "Error"
range = [11, 19]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/ann_removed_nl.svg b/tests/fixtures/color/ann_removed_nl.svg
new file mode 100644
index 00000000..bb12aecf
--- /dev/null
+++ b/tests/fixtures/color/ann_removed_nl.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/ann_removed_nl.toml b/tests/fixtures/color/ann_removed_nl.toml
similarity index 89%
rename from tests/fixtures/no-color/ann_removed_nl.toml
rename to tests/fixtures/color/ann_removed_nl.toml
index b681c293..36f74ef6 100644
--- a/tests/fixtures/no-color/ann_removed_nl.toml
+++ b/tests/fixtures/color/ann_removed_nl.toml
@@ -10,3 +10,6 @@ origin = "Cargo.toml"
label = ""
level = "Error"
range = [4, 5]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/ensure-emoji-highlight-width.svg b/tests/fixtures/color/ensure-emoji-highlight-width.svg
new file mode 100644
index 00000000..e5646e61
--- /dev/null
+++ b/tests/fixtures/color/ensure-emoji-highlight-width.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/ensure-emoji-highlight-width.toml b/tests/fixtures/color/ensure-emoji-highlight-width.toml
similarity index 94%
rename from tests/fixtures/no-color/ensure-emoji-highlight-width.toml
rename to tests/fixtures/color/ensure-emoji-highlight-width.toml
index 7af05ff1..52168b48 100644
--- a/tests/fixtures/no-color/ensure-emoji-highlight-width.toml
+++ b/tests/fixtures/color/ensure-emoji-highlight-width.toml
@@ -13,3 +13,6 @@ origin = ""
label = ""
level = "Error"
range = [0, 35]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/fold_ann_multiline.svg b/tests/fixtures/color/fold_ann_multiline.svg
new file mode 100644
index 00000000..6a89c4f7
--- /dev/null
+++ b/tests/fixtures/color/fold_ann_multiline.svg
@@ -0,0 +1,49 @@
+
diff --git a/tests/fixtures/no-color/fold_ann_multiline.toml b/tests/fixtures/color/fold_ann_multiline.toml
similarity index 97%
rename from tests/fixtures/no-color/fold_ann_multiline.toml
rename to tests/fixtures/color/fold_ann_multiline.toml
index 09fc7d44..80edfb55 100644
--- a/tests/fixtures/no-color/fold_ann_multiline.toml
+++ b/tests/fixtures/color/fold_ann_multiline.toml
@@ -39,3 +39,6 @@ range = [5, 19]
label = "expected enum `std::option::Option`, found ()"
level = "Error"
range = [22, 766]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/fold_bad_origin_line.svg b/tests/fixtures/color/fold_bad_origin_line.svg
new file mode 100644
index 00000000..23f1b646
--- /dev/null
+++ b/tests/fixtures/color/fold_bad_origin_line.svg
@@ -0,0 +1,37 @@
+
diff --git a/tests/fixtures/no-color/fold_bad_origin_line.toml b/tests/fixtures/color/fold_bad_origin_line.toml
similarity index 90%
rename from tests/fixtures/no-color/fold_bad_origin_line.toml
rename to tests/fixtures/color/fold_bad_origin_line.toml
index 1e81a713..3e40137a 100644
--- a/tests/fixtures/no-color/fold_bad_origin_line.toml
+++ b/tests/fixtures/color/fold_bad_origin_line.toml
@@ -15,3 +15,6 @@ fold = true
label = "error here"
level = "Warning"
range = [2,16]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/fold_leading.svg b/tests/fixtures/color/fold_leading.svg
new file mode 100644
index 00000000..e69965e9
--- /dev/null
+++ b/tests/fixtures/color/fold_leading.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/fold_leading.toml b/tests/fixtures/color/fold_leading.toml
similarity index 94%
rename from tests/fixtures/no-color/fold_leading.toml
rename to tests/fixtures/color/fold_leading.toml
index e3fc696a..90c6c8c4 100644
--- a/tests/fixtures/no-color/fold_leading.toml
+++ b/tests/fixtures/color/fold_leading.toml
@@ -24,3 +24,6 @@ fold = true
label = ""
level = "Error"
range = [132, 134]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/fold_trailing.svg b/tests/fixtures/color/fold_trailing.svg
new file mode 100644
index 00000000..41bf7c79
--- /dev/null
+++ b/tests/fixtures/color/fold_trailing.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/fold_trailing.toml b/tests/fixtures/color/fold_trailing.toml
similarity index 93%
rename from tests/fixtures/no-color/fold_trailing.toml
rename to tests/fixtures/color/fold_trailing.toml
index 8ee4c051..10b2240c 100644
--- a/tests/fixtures/no-color/fold_trailing.toml
+++ b/tests/fixtures/color/fold_trailing.toml
@@ -23,3 +23,6 @@ fold = true
label = ""
level = "Error"
range = [8, 10]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/issue_9.svg b/tests/fixtures/color/issue_9.svg
new file mode 100644
index 00000000..80b891e0
--- /dev/null
+++ b/tests/fixtures/color/issue_9.svg
@@ -0,0 +1,49 @@
+
diff --git a/tests/fixtures/no-color/issue_9.toml b/tests/fixtures/color/issue_9.toml
similarity index 96%
rename from tests/fixtures/no-color/issue_9.toml
rename to tests/fixtures/color/issue_9.toml
index 1f35243c..9de17534 100644
--- a/tests/fixtures/no-color/issue_9.toml
+++ b/tests/fixtures/color/issue_9.toml
@@ -26,3 +26,6 @@ line_start = 9
label = "value used here after move"
level = "Error"
range = [0, 1]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/multiple_annotations.svg b/tests/fixtures/color/multiple_annotations.svg
new file mode 100644
index 00000000..84f47495
--- /dev/null
+++ b/tests/fixtures/color/multiple_annotations.svg
@@ -0,0 +1,54 @@
+
diff --git a/tests/fixtures/no-color/multiple_annotations.toml b/tests/fixtures/color/multiple_annotations.toml
similarity index 96%
rename from tests/fixtures/no-color/multiple_annotations.toml
rename to tests/fixtures/color/multiple_annotations.toml
index 842b137e..824c5305 100644
--- a/tests/fixtures/no-color/multiple_annotations.toml
+++ b/tests/fixtures/color/multiple_annotations.toml
@@ -27,3 +27,6 @@ range = [184, 194]
label = "Referenced again here"
level = "Error"
range = [243, 253]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/simple.svg b/tests/fixtures/color/simple.svg
new file mode 100644
index 00000000..7b92d238
--- /dev/null
+++ b/tests/fixtures/color/simple.svg
@@ -0,0 +1,43 @@
+
diff --git a/tests/fixtures/no-color/simple.toml b/tests/fixtures/color/simple.toml
similarity index 94%
rename from tests/fixtures/no-color/simple.toml
rename to tests/fixtures/color/simple.toml
index 76b5bac6..2e6969f7 100644
--- a/tests/fixtures/no-color/simple.toml
+++ b/tests/fixtures/color/simple.toml
@@ -17,3 +17,6 @@ range = [20, 23]
label = "expected one of `.`, `;`, `?`, or an operator here"
level = "Warning"
range = [10, 11]
+
+[renderer]
+color = true
diff --git a/tests/fixtures/color/strip_line.svg b/tests/fixtures/color/strip_line.svg
new file mode 100644
index 00000000..9da24fe3
--- /dev/null
+++ b/tests/fixtures/color/strip_line.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/strip_line.toml b/tests/fixtures/color/strip_line.toml
similarity index 97%
rename from tests/fixtures/no-color/strip_line.toml
rename to tests/fixtures/color/strip_line.toml
index 459cbe1c..546c96a0 100644
--- a/tests/fixtures/no-color/strip_line.toml
+++ b/tests/fixtures/color/strip_line.toml
@@ -14,5 +14,5 @@ level = "Error"
range = [192, 194]
[renderer]
-color = false
+color = true
anonymized_line_numbers = true
diff --git a/tests/fixtures/color/strip_line_char.svg b/tests/fixtures/color/strip_line_char.svg
new file mode 100644
index 00000000..cbafc789
--- /dev/null
+++ b/tests/fixtures/color/strip_line_char.svg
@@ -0,0 +1,36 @@
+
diff --git a/tests/fixtures/no-color/strip_line_char.toml b/tests/fixtures/color/strip_line_char.toml
similarity index 97%
rename from tests/fixtures/no-color/strip_line_char.toml
rename to tests/fixtures/color/strip_line_char.toml
index dedefd5a..863abb3f 100644
--- a/tests/fixtures/no-color/strip_line_char.toml
+++ b/tests/fixtures/color/strip_line_char.toml
@@ -14,5 +14,5 @@ level = "Error"
range = [192, 194]
[renderer]
-color = false
+color = true
anonymized_line_numbers = true
diff --git a/tests/fixtures/color/strip_line_non_ws.svg b/tests/fixtures/color/strip_line_non_ws.svg
new file mode 100644
index 00000000..e4f8a856
--- /dev/null
+++ b/tests/fixtures/color/strip_line_non_ws.svg
@@ -0,0 +1,40 @@
+
diff --git a/tests/fixtures/no-color/strip_line_non_ws.toml b/tests/fixtures/color/strip_line_non_ws.toml
similarity index 98%
rename from tests/fixtures/no-color/strip_line_non_ws.toml
rename to tests/fixtures/color/strip_line_non_ws.toml
index 06ecad85..c6573ff4 100644
--- a/tests/fixtures/no-color/strip_line_non_ws.toml
+++ b/tests/fixtures/color/strip_line_non_ws.toml
@@ -23,3 +23,4 @@ range = [236, 238]
[renderer]
anonymized_line_numbers = true
+color = true
diff --git a/tests/fixtures/deserialize.rs b/tests/fixtures/deserialize.rs
index 3ddef798..a38a88e7 100644
--- a/tests/fixtures/deserialize.rs
+++ b/tests/fixtures/deserialize.rs
@@ -151,6 +151,8 @@ pub struct RendererDef {
anonymized_line_numbers: bool,
#[serde(default)]
term_width: Option,
+ #[serde(default)]
+ color: bool,
}
impl From for Renderer {
@@ -158,8 +160,15 @@ impl From for Renderer {
let RendererDef {
anonymized_line_numbers,
term_width,
+ color,
} = val;
- Renderer::plain()
+
+ let renderer = if color {
+ Renderer::styled()
+ } else {
+ Renderer::plain()
+ };
+ renderer
.anonymized_line_numbers(anonymized_line_numbers)
.term_width(term_width.unwrap_or(DEFAULT_TERM_WIDTH))
}
diff --git a/tests/fixtures/no-color/ann_eof.svg b/tests/fixtures/no-color/ann_eof.svg
deleted file mode 100644
index c8900d03..00000000
--- a/tests/fixtures/no-color/ann_eof.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/ann_insertion.svg b/tests/fixtures/no-color/ann_insertion.svg
deleted file mode 100644
index b15b81b4..00000000
--- a/tests/fixtures/no-color/ann_insertion.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/ann_multiline.svg b/tests/fixtures/no-color/ann_multiline.svg
deleted file mode 100644
index f4b4433b..00000000
--- a/tests/fixtures/no-color/ann_multiline.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/tests/fixtures/no-color/ann_multiline2.svg b/tests/fixtures/no-color/ann_multiline2.svg
deleted file mode 100644
index 49c2c4b7..00000000
--- a/tests/fixtures/no-color/ann_multiline2.svg
+++ /dev/null
@@ -1,37 +0,0 @@
-
diff --git a/tests/fixtures/no-color/ann_removed_nl.svg b/tests/fixtures/no-color/ann_removed_nl.svg
deleted file mode 100644
index c8900d03..00000000
--- a/tests/fixtures/no-color/ann_removed_nl.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/ensure-emoji-highlight-width.svg b/tests/fixtures/no-color/ensure-emoji-highlight-width.svg
deleted file mode 100644
index 0840805e..00000000
--- a/tests/fixtures/no-color/ensure-emoji-highlight-width.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/fold_ann_multiline.svg b/tests/fixtures/no-color/fold_ann_multiline.svg
deleted file mode 100644
index f82fe25d..00000000
--- a/tests/fixtures/no-color/fold_ann_multiline.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
diff --git a/tests/fixtures/no-color/fold_bad_origin_line.svg b/tests/fixtures/no-color/fold_bad_origin_line.svg
deleted file mode 100644
index 13a08344..00000000
--- a/tests/fixtures/no-color/fold_bad_origin_line.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/fold_leading.svg b/tests/fixtures/no-color/fold_leading.svg
deleted file mode 100644
index 72887a28..00000000
--- a/tests/fixtures/no-color/fold_leading.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/fold_trailing.svg b/tests/fixtures/no-color/fold_trailing.svg
deleted file mode 100644
index 15c98502..00000000
--- a/tests/fixtures/no-color/fold_trailing.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/issue_9.svg b/tests/fixtures/no-color/issue_9.svg
deleted file mode 100644
index af22d82d..00000000
--- a/tests/fixtures/no-color/issue_9.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
diff --git a/tests/fixtures/no-color/multiple_annotations.svg b/tests/fixtures/no-color/multiple_annotations.svg
deleted file mode 100644
index 18bca93e..00000000
--- a/tests/fixtures/no-color/multiple_annotations.svg
+++ /dev/null
@@ -1,51 +0,0 @@
-
diff --git a/tests/fixtures/no-color/simple.svg b/tests/fixtures/no-color/simple.svg
deleted file mode 100644
index ae7b03cf..00000000
--- a/tests/fixtures/no-color/simple.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/tests/fixtures/no-color/strip_line.svg b/tests/fixtures/no-color/strip_line.svg
deleted file mode 100644
index b1fd8a6d..00000000
--- a/tests/fixtures/no-color/strip_line.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/strip_line_char.svg b/tests/fixtures/no-color/strip_line_char.svg
deleted file mode 100644
index 15296a14..00000000
--- a/tests/fixtures/no-color/strip_line_char.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
diff --git a/tests/fixtures/no-color/strip_line_non_ws.svg b/tests/fixtures/no-color/strip_line_non_ws.svg
deleted file mode 100644
index f1977dc5..00000000
--- a/tests/fixtures/no-color/strip_line_non_ws.svg
+++ /dev/null
@@ -1,37 +0,0 @@
-