Skip to content

Commit da01062

Browse files
committed
test(fixtures): Move to source code based color tests
1 parent a78e165 commit da01062

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+519
-965
lines changed

Cargo.lock

+5-322
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

-6
Original file line numberDiff line numberDiff line change
@@ -128,17 +128,11 @@ divan = "0.1.14"
128128
glob = "0.3.1"
129129
serde = { version = "1.0.199", features = ["derive"] }
130130
snapbox = { version = "0.6.0", features = ["diff", "term-svg", "cmd", "examples"] }
131-
toml = "0.8.0"
132-
tryfn = "0.2.1"
133131

134132
[[bench]]
135133
name = "bench"
136134
harness = false
137135

138-
[[test]]
139-
name = "fixtures"
140-
harness = false
141-
142136
[features]
143137
default = []
144138
simd = ["memchr"]

tests/color/ann_eof.rs

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use annotate_snippets::{AnnotationKind, Group, Level, Renderer, Snippet};
2+
3+
use snapbox::{assert_data_eq, file};
4+
5+
#[test]
6+
fn case() {
7+
let input = Level::ERROR.header("expected `.`, `=`").group(
8+
Group::new().element(
9+
Snippet::source("asdf")
10+
.origin("Cargo.toml")
11+
.line_start(1)
12+
.annotation(AnnotationKind::Primary.span(4..4).label("")),
13+
),
14+
);
15+
let expected = file!["ann_eof.term.svg"];
16+
let renderer = Renderer::styled();
17+
assert_data_eq!(renderer.render(input), expected);
18+
}
File renamed without changes.

tests/color/ann_insertion.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let input = Level::ERROR.header("expected `.`, `=`").group(
10+
Group::new().element(
11+
Snippet::source("asf")
12+
.origin("Cargo.toml")
13+
.line_start(1)
14+
.annotation(AnnotationKind::Primary.span(2..2).label("'d' belongs here")),
15+
),
16+
);
17+
let expected = file!["ann_insertion.term.svg"];
18+
let renderer = Renderer::styled();
19+
assert_data_eq!(renderer.render(input), expected);
20+
}

tests/color/ann_multiline.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#" if let DisplayLine::Source {
10+
ref mut inline_marks,
11+
} = body[body_idx]
12+
"#;
13+
14+
let input = Level::ERROR
15+
.header("pattern does not mention fields `lineno`, `content`")
16+
.id("E0027")
17+
.group(
18+
Group::new().element(
19+
Snippet::source(source)
20+
.origin("src/display_list.rs")
21+
.line_start(139)
22+
.fold(false)
23+
.annotation(
24+
AnnotationKind::Primary
25+
.span(31..128)
26+
.label("missing fields `lineno`, `content`"),
27+
),
28+
),
29+
);
30+
let expected = file!["ann_multiline.term.svg"];
31+
let renderer = Renderer::styled();
32+
assert_data_eq!(renderer.render(input), expected);
33+
}

tests/color/ann_multiline2.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#"This is an example
10+
of an edge case of an annotation overflowing
11+
to exactly one character on next line.
12+
"#;
13+
14+
let input = Level::ERROR
15+
.header("spacing error found")
16+
.id("E####")
17+
.group(
18+
Group::new().element(
19+
Snippet::source(source)
20+
.origin("foo.txt")
21+
.line_start(26)
22+
.fold(false)
23+
.annotation(
24+
AnnotationKind::Primary
25+
.span(11..19)
26+
.label("this should not be on separate lines"),
27+
),
28+
),
29+
);
30+
let expected = file!["ann_multiline2.term.svg"];
31+
let renderer = Renderer::styled();
32+
assert_data_eq!(renderer.render(input), expected);
33+
}

tests/color/ann_removed_nl.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let input = Level::ERROR.header("expected `.`, `=`").group(
10+
Group::new().element(
11+
Snippet::source("asdf")
12+
.origin("Cargo.toml")
13+
.line_start(1)
14+
.annotation(AnnotationKind::Primary.span(4..5).label("")),
15+
),
16+
);
17+
let expected = file!["ann_removed_nl.term.svg"];
18+
let renderer = Renderer::styled();
19+
assert_data_eq!(renderer.render(input), expected);
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#""haha this isn't a valid name 🐛" = { package = "libc", version = "0.1" }
10+
"#;
11+
12+
let input = Level::ERROR.header("invalid character ` ` in package name: `haha this isn't a valid name 🐛`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters)")
13+
.group(
14+
Group::new()
15+
.element(
16+
Snippet::source(source)
17+
.origin("<file>")
18+
.line_start(7)
19+
.annotation(AnnotationKind::Primary.span(0..35).label(""))
20+
)
21+
)
22+
;
23+
let expected = file!["ensure_emoji_highlight_width.term.svg"];
24+
let renderer = Renderer::styled();
25+
assert_data_eq!(renderer.render(input), expected);
26+
}

tests/color/fold_ann_multiline.rs

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#") -> Option<String> {
10+
for ann in annotations {
11+
match (ann.range.0, ann.range.1) {
12+
(None, None) => continue,
13+
(Some(start), Some(end)) if start > end_index || end < start_index => continue,
14+
(Some(start), Some(end)) if start >= start_index && end <= end_index => {
15+
let label = if let Some(ref label) = ann.label {
16+
format!(" {}", label)
17+
} else {
18+
String::from("")
19+
};
20+
21+
return Some(format!(
22+
"{}{}{}",
23+
" ".repeat(start - start_index),
24+
"^".repeat(end - start),
25+
label
26+
));
27+
}
28+
_ => continue,
29+
}
30+
}
31+
"#;
32+
33+
let input = Level::ERROR.header("mismatched types").id("E0308").group(
34+
Group::new().element(
35+
Snippet::source(source)
36+
.origin("src/format.rs")
37+
.line_start(51)
38+
.fold(true)
39+
.annotation(AnnotationKind::Context.span(5..19).label(
40+
"expected `std::option::Option<std::string::String>` because of return type",
41+
))
42+
.annotation(
43+
AnnotationKind::Primary
44+
.span(22..766)
45+
.label("expected enum `std::option::Option`, found ()"),
46+
),
47+
),
48+
);
49+
let expected = file!["fold_ann_multiline.term.svg"];
50+
let renderer = Renderer::styled();
51+
assert_data_eq!(renderer.render(input), expected);
52+
}

tests/color/fold_bad_origin_line.rs

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#"
10+
11+
invalid syntax
12+
"#;
13+
14+
let input = Level::ERROR.header("").group(
15+
Group::new().element(
16+
Snippet::source(source)
17+
.origin("path/to/error.rs")
18+
.line_start(1)
19+
.fold(true)
20+
.annotation(AnnotationKind::Context.span(2..16).label("error here")),
21+
),
22+
);
23+
let expected = file!["fold_bad_origin_line.term.svg"];
24+
let renderer = Renderer::styled();
25+
assert_data_eq!(renderer.render(input), expected);
26+
}

tests/color/fold_leading.rs

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#"[workspace]
10+
11+
[package]
12+
name = "hello"
13+
version = "1.0.0"
14+
license = "MIT"
15+
rust-version = "1.70"
16+
edition = "2021"
17+
18+
[lints]
19+
workspace = 20
20+
"#;
21+
22+
let input = Level::ERROR
23+
.header("invalid type: integer `20`, expected a bool")
24+
.id("E0308")
25+
.group(
26+
Group::new().element(
27+
Snippet::source(source)
28+
.origin("Cargo.toml")
29+
.line_start(1)
30+
.fold(true)
31+
.annotation(AnnotationKind::Primary.span(132..134).label("")),
32+
),
33+
);
34+
let expected = file!["fold_leading.term.svg"];
35+
let renderer = Renderer::styled();
36+
assert_data_eq!(renderer.render(input), expected);
37+
}

tests/color/fold_trailing.rs

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let source = r#"lints = 20
10+
11+
[workspace]
12+
13+
[package]
14+
name = "hello"
15+
version = "1.0.0"
16+
license = "MIT"
17+
rust-version = "1.70"
18+
edition = "2021"
19+
"#;
20+
21+
let input = Level::ERROR
22+
.header("invalid type: integer `20`, expected a lints table")
23+
.id("E0308")
24+
.group(
25+
Group::new().element(
26+
Snippet::source(source)
27+
.origin("Cargo.toml")
28+
.line_start(1)
29+
.fold(true)
30+
.annotation(AnnotationKind::Primary.span(8..10).label("")),
31+
),
32+
);
33+
let expected = file!["fold_trailing.term.svg"];
34+
let renderer = Renderer::styled();
35+
assert_data_eq!(renderer.render(input), expected);
36+
}

tests/color/issue_9.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use annotate_snippets::{
2+
AnnotationKind, Group, Level, Renderer, Snippet,
3+
};
4+
5+
use snapbox::{assert_data_eq, file};
6+
7+
#[test]
8+
fn case() {
9+
let input = Level::ERROR.header("expected one of `.`, `;`, `?`, or an operator, found `for`")
10+
.group(
11+
Group::new()
12+
.element(
13+
Snippet::source("let x = vec![1];")
14+
.origin("/code/rust/src/test/ui/annotate-snippet/suggestion.rs")
15+
.line_start(4)
16+
.annotation(AnnotationKind::Context.span(4..5).label("move occurs because `x` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait"))
17+
)
18+
.element(
19+
Snippet::source("let y = x;")
20+
.line_start(7)
21+
.annotation(AnnotationKind::Context.span(8..9).label("value moved here"))
22+
)
23+
.element(
24+
Snippet::source("x;")
25+
.line_start(9)
26+
.annotation(AnnotationKind::Primary.span(0..1).label("value used here after move"))
27+
)
28+
)
29+
;
30+
let expected = file!["issue_9.term.svg"];
31+
let renderer = Renderer::styled();
32+
assert_data_eq!(renderer.render(input), expected);
33+
}
File renamed without changes.

tests/color/main.rs

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
mod ann_eof;
2+
mod ann_insertion;
3+
mod ann_multiline;
4+
mod ann_multiline2;
5+
mod ann_removed_nl;
6+
mod ensure_emoji_highlight_width;
7+
mod fold_ann_multiline;
8+
mod fold_bad_origin_line;
9+
mod fold_leading;
10+
mod fold_trailing;
11+
mod issue_9;
12+
mod multiple_annotations;
13+
mod simple;
14+
mod strip_line;
15+
mod strip_line_char;
16+
mod strip_line_non_ws;

0 commit comments

Comments
 (0)