Skip to content

Commit 44da343

Browse files
authored
Merge pull request #201 from Muscraft/migrate-fixture-tests
Migrate fixture tests
2 parents a78e165 + df05eb7 commit 44da343

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

+489
-983
lines changed

Cargo.lock

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

Cargo.toml

-9
Original file line numberDiff line numberDiff line change
@@ -123,22 +123,13 @@ unicode-width = "0.2.0"
123123
[dev-dependencies]
124124
annotate-snippets = { path = ".", features = ["testing-colors"] }
125125
anstream = "0.6.13"
126-
difference = "2.0.0"
127126
divan = "0.1.14"
128-
glob = "0.3.1"
129-
serde = { version = "1.0.199", features = ["derive"] }
130127
snapbox = { version = "0.6.0", features = ["diff", "term-svg", "cmd", "examples"] }
131-
toml = "0.8.0"
132-
tryfn = "0.2.1"
133128

134129
[[bench]]
135130
name = "bench"
136131
harness = false
137132

138-
[[test]]
139-
name = "fixtures"
140-
harness = false
141-
142133
[features]
143134
default = []
144135
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

+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("asf")
10+
.origin("Cargo.toml")
11+
.line_start(1)
12+
.annotation(AnnotationKind::Primary.span(2..2).label("'d' belongs here")),
13+
),
14+
);
15+
let expected = file!["ann_insertion.term.svg"];
16+
let renderer = Renderer::styled();
17+
assert_data_eq!(renderer.render(input), expected);
18+
}

tests/color/ann_multiline.rs

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

tests/color/ann_multiline2.rs

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

tests/color/ann_removed_nl.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..5).label("")),
13+
),
14+
);
15+
let expected = file!["ann_removed_nl.term.svg"];
16+
let renderer = Renderer::styled();
17+
assert_data_eq!(renderer.render(input), expected);
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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 source = r#""haha this isn't a valid name 🐛" = { package = "libc", version = "0.1" }
8+
"#;
9+
10+
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)")
11+
.group(
12+
Group::new()
13+
.element(
14+
Snippet::source(source)
15+
.origin("<file>")
16+
.line_start(7)
17+
.annotation(AnnotationKind::Primary.span(0..35).label(""))
18+
)
19+
)
20+
;
21+
let expected = file!["ensure_emoji_highlight_width.term.svg"];
22+
let renderer = Renderer::styled();
23+
assert_data_eq!(renderer.render(input), expected);
24+
}

tests/color/fold_ann_multiline.rs

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

tests/color/fold_bad_origin_line.rs

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

tests/color/fold_leading.rs

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

tests/color/fold_trailing.rs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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 source = r#"lints = 20
8+
9+
[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+
19+
let input = Level::ERROR
20+
.header("invalid type: integer `20`, expected a lints table")
21+
.id("E0308")
22+
.group(
23+
Group::new().element(
24+
Snippet::source(source)
25+
.origin("Cargo.toml")
26+
.line_start(1)
27+
.fold(true)
28+
.annotation(AnnotationKind::Primary.span(8..10).label("")),
29+
),
30+
);
31+
let expected = file!["fold_trailing.term.svg"];
32+
let renderer = Renderer::styled();
33+
assert_data_eq!(renderer.render(input), expected);
34+
}

tests/color/issue_9.rs

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