aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-14 13:27:08 +0000
committerAleksey Kladov <[email protected]>2019-01-15 11:18:24 +0000
commitd79a9b17dc4fb132443aa4ec1ca0ab278d2a217c (patch)
tree525b697381048b2f6d615a9c66c92485db8511ec /crates
parent8caff4e03475c20392f13e8c6ad469bd01a4b4ce (diff)
switch to insta for testing
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_ide_api/Cargo.toml3
-rw-r--r--crates/ra_ide_api/src/extend_selection.rs5
-rw-r--r--crates/ra_ide_api/src/runnables.rs97
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__highlight_query_group_macro.snap26
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap70
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__runnables.snap22
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__runnables_module.snap18
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap18
-rw-r--r--crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap18
-rw-r--r--crates/ra_ide_api/src/syntax_highlighting.rs32
-rw-r--r--crates/ra_ide_api/tests/test/main.rs20
-rw-r--r--crates/ra_ide_api/tests/test/runnables.rs109
-rw-r--r--crates/ra_ide_api/tests/test/snapshots/test__unresolved_module_diagnostic.snap26
-rw-r--r--crates/ra_ide_api_light/Cargo.toml1
-rw-r--r--crates/ra_ide_api_light/src/lib.rs13
-rw-r--r--crates/ra_ide_api_light/src/snapshots/tests__file_structure.snap80
-rw-r--r--crates/ra_ide_api_light/src/snapshots/tests__highlighting.snap30
-rw-r--r--crates/ra_ide_api_light/src/structure.rs16
-rw-r--r--crates/test_utils/src/lib.rs8
19 files changed, 425 insertions, 187 deletions
diff --git a/crates/ra_ide_api/Cargo.toml b/crates/ra_ide_api/Cargo.toml
index d42a664b6..f7013c3c1 100644
--- a/crates/ra_ide_api/Cargo.toml
+++ b/crates/ra_ide_api/Cargo.toml
@@ -21,3 +21,6 @@ ra_text_edit = { path = "../ra_text_edit" }
21ra_db = { path = "../ra_db" } 21ra_db = { path = "../ra_db" }
22hir = { path = "../ra_hir", package = "ra_hir" } 22hir = { path = "../ra_hir", package = "ra_hir" }
23test_utils = { path = "../test_utils" } 23test_utils = { path = "../test_utils" }
24
25[dev-dependencies]
26insta = "0.1.4"
diff --git a/crates/ra_ide_api/src/extend_selection.rs b/crates/ra_ide_api/src/extend_selection.rs
index c3c809c9f..9f0ab2f1c 100644
--- a/crates/ra_ide_api/src/extend_selection.rs
+++ b/crates/ra_ide_api/src/extend_selection.rs
@@ -38,8 +38,9 @@ fn find_macro_call(node: &SyntaxNode, range: TextRange) -> Option<&ast::MacroCal
38 38
39#[cfg(test)] 39#[cfg(test)]
40mod tests { 40mod tests {
41 use ra_syntax::TextRange;
42
41 use crate::mock_analysis::single_file_with_range; 43 use crate::mock_analysis::single_file_with_range;
42 use test_utils::assert_eq_dbg;
43 44
44 #[test] 45 #[test]
45 fn extend_selection_inside_macros() { 46 fn extend_selection_inside_macros() {
@@ -51,6 +52,6 @@ mod tests {
51 ", 52 ",
52 ); 53 );
53 let r = analysis.extend_selection(frange); 54 let r = analysis.extend_selection(frange);
54 assert_eq_dbg("[51; 56)", &r); 55 assert_eq!(r, TextRange::from_to(51.into(), 56.into()));
55 } 56 }
56} 57}
diff --git a/crates/ra_ide_api/src/runnables.rs b/crates/ra_ide_api/src/runnables.rs
index 53e49da5b..f1de28094 100644
--- a/crates/ra_ide_api/src/runnables.rs
+++ b/crates/ra_ide_api/src/runnables.rs
@@ -92,3 +92,100 @@ fn runnable_mod(db: &RootDatabase, file_id: FileId, module: &ast::Module) -> Opt
92 kind: RunnableKind::TestMod { path }, 92 kind: RunnableKind::TestMod { path },
93 }) 93 })
94} 94}
95
96#[cfg(test)]
97mod tests {
98 use insta::assert_debug_snapshot_matches;
99
100 use crate::mock_analysis::analysis_and_position;
101
102 #[test]
103 fn test_runnables() {
104 let (analysis, pos) = analysis_and_position(
105 r#"
106 //- /lib.rs
107 <|> //empty
108 fn main() {}
109
110 #[test]
111 fn test_foo() {}
112
113 #[test]
114 #[ignore]
115 fn test_foo() {}
116 "#,
117 );
118 let runnables = analysis.runnables(pos.file_id).unwrap();
119 assert_debug_snapshot_matches!("runnables", &runnables)
120 }
121
122 #[test]
123 fn test_runnables_module() {
124 let (analysis, pos) = analysis_and_position(
125 r#"
126 //- /lib.rs
127 <|> //empty
128 mod test_mod {
129 #[test]
130 fn test_foo1() {}
131 }
132 "#,
133 );
134 let runnables = analysis.runnables(pos.file_id).unwrap();
135 assert_debug_snapshot_matches!("runnables_module", &runnables)
136 }
137
138 #[test]
139 fn test_runnables_one_depth_layer_module() {
140 let (analysis, pos) = analysis_and_position(
141 r#"
142 //- /lib.rs
143 <|> //empty
144 mod foo {
145 mod test_mod {
146 #[test]
147 fn test_foo1() {}
148 }
149 }
150 "#,
151 );
152 let runnables = analysis.runnables(pos.file_id).unwrap();
153 assert_debug_snapshot_matches!("runnables_one_depth_layer_module", &runnables)
154 }
155
156 #[test]
157 fn test_runnables_multiple_depth_module() {
158 let (analysis, pos) = analysis_and_position(
159 r#"
160 //- /lib.rs
161 <|> //empty
162 mod foo {
163 mod bar {
164 mod test_mod {
165 #[test]
166 fn test_foo1() {}
167 }
168 }
169 }
170 "#,
171 );
172 let runnables = analysis.runnables(pos.file_id).unwrap();
173 assert_debug_snapshot_matches!("runnables_multiple_depth_module", &runnables)
174 }
175
176 #[test]
177 fn test_runnables_no_test_function_in_module() {
178 let (analysis, pos) = analysis_and_position(
179 r#"
180 //- /lib.rs
181 <|> //empty
182 mod test_mod {
183 fn foo1() {}
184 }
185 "#,
186 );
187 let runnables = analysis.runnables(pos.file_id).unwrap();
188 assert!(runnables.is_empty())
189 }
190
191}
diff --git a/crates/ra_ide_api/src/snapshots/tests__highlight_query_group_macro.snap b/crates/ra_ide_api/src/snapshots/tests__highlight_query_group_macro.snap
new file mode 100644
index 000000000..b84aa9c78
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__highlight_query_group_macro.snap
@@ -0,0 +1,26 @@
1Created: 2019-01-15T11:15:20.732493641+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/syntax_highlighting.rs
4
5[
6 HighlightedRange {
7 range: [20; 32),
8 tag: "macro"
9 },
10 HighlightedRange {
11 range: [13; 18),
12 tag: "text"
13 },
14 HighlightedRange {
15 range: [51; 54),
16 tag: "keyword"
17 },
18 HighlightedRange {
19 range: [55; 60),
20 tag: "keyword"
21 },
22 HighlightedRange {
23 range: [61; 72),
24 tag: "function"
25 }
26]
diff --git a/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap b/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap
new file mode 100644
index 000000000..14c6e5a4e
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap
@@ -0,0 +1,70 @@
1Created: 2019-01-15T11:15:20.732523231+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/syntax_highlighting.rs
4
5[
6 HighlightedRange {
7 range: [13; 15),
8 tag: "keyword"
9 },
10 HighlightedRange {
11 range: [16; 20),
12 tag: "function"
13 },
14 HighlightedRange {
15 range: [41; 46),
16 tag: "macro"
17 },
18 HighlightedRange {
19 range: [49; 52),
20 tag: "keyword"
21 },
22 HighlightedRange {
23 range: [57; 59),
24 tag: "literal"
25 },
26 HighlightedRange {
27 range: [82; 86),
28 tag: "macro"
29 },
30 HighlightedRange {
31 range: [89; 92),
32 tag: "keyword"
33 },
34 HighlightedRange {
35 range: [97; 99),
36 tag: "literal"
37 },
38 HighlightedRange {
39 range: [49; 52),
40 tag: "keyword"
41 },
42 HighlightedRange {
43 range: [53; 54),
44 tag: "function"
45 },
46 HighlightedRange {
47 range: [57; 59),
48 tag: "literal"
49 },
50 HighlightedRange {
51 range: [61; 62),
52 tag: "text"
53 },
54 HighlightedRange {
55 range: [89; 92),
56 tag: "keyword"
57 },
58 HighlightedRange {
59 range: [93; 94),
60 tag: "function"
61 },
62 HighlightedRange {
63 range: [97; 99),
64 tag: "literal"
65 },
66 HighlightedRange {
67 range: [101; 102),
68 tag: "text"
69 }
70]
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables.snap b/crates/ra_ide_api/src/snapshots/tests__runnables.snap
new file mode 100644
index 000000000..ba6cba0ab
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__runnables.snap
@@ -0,0 +1,22 @@
1Created: 2019-01-15T11:15:20.732460119+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/runnables.rs
4
5[
6 Runnable {
7 range: [1; 21),
8 kind: Bin
9 },
10 Runnable {
11 range: [22; 46),
12 kind: Test {
13 name: "test_foo"
14 }
15 },
16 Runnable {
17 range: [47; 81),
18 kind: Test {
19 name: "test_foo"
20 }
21 }
22]
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap
new file mode 100644
index 000000000..b3f2d4d6e
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap
@@ -0,0 +1,18 @@
1Created: 2019-01-15T11:15:20.732460109+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/runnables.rs
4
5[
6 Runnable {
7 range: [1; 59),
8 kind: TestMod {
9 path: "test_mod"
10 }
11 },
12 Runnable {
13 range: [28; 57),
14 kind: Test {
15 name: "test_foo1"
16 }
17 }
18]
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap
new file mode 100644
index 000000000..6eba482e7
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap
@@ -0,0 +1,18 @@
1Created: 2019-01-15T11:15:20.732522773+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/runnables.rs
4
5[
6 Runnable {
7 range: [41; 115),
8 kind: TestMod {
9 path: "foo::bar::test_mod"
10 }
11 },
12 Runnable {
13 range: [68; 105),
14 kind: Test {
15 name: "test_foo1"
16 }
17 }
18]
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap
new file mode 100644
index 000000000..f40c762f3
--- /dev/null
+++ b/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap
@@ -0,0 +1,18 @@
1Created: 2019-01-15T11:15:20.732480089+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/src/runnables.rs
4
5[
6 Runnable {
7 range: [23; 85),
8 kind: TestMod {
9 path: "foo::test_mod"
10 }
11 },
12 Runnable {
13 range: [46; 79),
14 kind: Test {
15 name: "test_foo1"
16 }
17 }
18]
diff --git a/crates/ra_ide_api/src/syntax_highlighting.rs b/crates/ra_ide_api/src/syntax_highlighting.rs
index cb19e9515..480b78dce 100644
--- a/crates/ra_ide_api/src/syntax_highlighting.rs
+++ b/crates/ra_ide_api/src/syntax_highlighting.rs
@@ -34,7 +34,8 @@ pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Cancelable<Vec<Hi
34#[cfg(test)] 34#[cfg(test)]
35mod tests { 35mod tests {
36 use crate::mock_analysis::single_file; 36 use crate::mock_analysis::single_file;
37 use test_utils::assert_eq_dbg; 37
38 use insta::assert_debug_snapshot_matches;
38 39
39 #[test] 40 #[test]
40 fn highlights_code_inside_macros() { 41 fn highlights_code_inside_macros() {
@@ -47,25 +48,7 @@ mod tests {
47 ", 48 ",
48 ); 49 );
49 let highlights = analysis.highlight(file_id).unwrap(); 50 let highlights = analysis.highlight(file_id).unwrap();
50 assert_eq_dbg( 51 assert_debug_snapshot_matches!("highlights_code_inside_macros", &highlights);
51 r#"[HighlightedRange { range: [13; 15), tag: "keyword" },
52 HighlightedRange { range: [16; 20), tag: "function" },
53 HighlightedRange { range: [41; 46), tag: "macro" },
54 HighlightedRange { range: [49; 52), tag: "keyword" },
55 HighlightedRange { range: [57; 59), tag: "literal" },
56 HighlightedRange { range: [82; 86), tag: "macro" },
57 HighlightedRange { range: [89; 92), tag: "keyword" },
58 HighlightedRange { range: [97; 99), tag: "literal" },
59 HighlightedRange { range: [49; 52), tag: "keyword" },
60 HighlightedRange { range: [53; 54), tag: "function" },
61 HighlightedRange { range: [57; 59), tag: "literal" },
62 HighlightedRange { range: [61; 62), tag: "text" },
63 HighlightedRange { range: [89; 92), tag: "keyword" },
64 HighlightedRange { range: [93; 94), tag: "function" },
65 HighlightedRange { range: [97; 99), tag: "literal" },
66 HighlightedRange { range: [101; 102), tag: "text" }]"#,
67 &highlights,
68 )
69 } 52 }
70 53
71 // FIXME: this test is not really necessary: artifact of the inital hacky 54 // FIXME: this test is not really necessary: artifact of the inital hacky
@@ -80,13 +63,6 @@ mod tests {
80 ", 63 ",
81 ); 64 );
82 let highlights = analysis.highlight(file_id).unwrap(); 65 let highlights = analysis.highlight(file_id).unwrap();
83 assert_eq_dbg( 66 assert_debug_snapshot_matches!("highlight_query_group_macro", &highlights);
84 r#"[HighlightedRange { range: [20; 32), tag: "macro" },
85 HighlightedRange { range: [13; 18), tag: "text" },
86 HighlightedRange { range: [51; 54), tag: "keyword" },
87 HighlightedRange { range: [55; 60), tag: "keyword" },
88 HighlightedRange { range: [61; 72), tag: "function" }]"#,
89 &highlights,
90 )
91 } 67 }
92} 68}
diff --git a/crates/ra_ide_api/tests/test/main.rs b/crates/ra_ide_api/tests/test/main.rs
index 7dc1dba73..2b863aedf 100644
--- a/crates/ra_ide_api/tests/test/main.rs
+++ b/crates/ra_ide_api/tests/test/main.rs
@@ -1,7 +1,6 @@
1mod runnables;
2
3use ra_syntax::TextRange; 1use ra_syntax::TextRange;
4use test_utils::{assert_eq_dbg, assert_eq_text}; 2use test_utils::assert_eq_text;
3use insta::assert_debug_snapshot_matches;
5 4
6use ra_ide_api::{ 5use ra_ide_api::{
7 mock_analysis::{single_file, single_file_with_position, MockAnalysis}, 6 mock_analysis::{single_file, single_file_with_position, MockAnalysis},
@@ -12,18 +11,7 @@ use ra_ide_api::{
12fn test_unresolved_module_diagnostic() { 11fn test_unresolved_module_diagnostic() {
13 let (analysis, file_id) = single_file("mod foo;"); 12 let (analysis, file_id) = single_file("mod foo;");
14 let diagnostics = analysis.diagnostics(file_id).unwrap(); 13 let diagnostics = analysis.diagnostics(file_id).unwrap();
15 assert_eq_dbg( 14 assert_debug_snapshot_matches!("unresolved_module_diagnostic", &diagnostics);
16 r#"[Diagnostic {
17 message: "unresolved module",
18 range: [4; 7),
19 fix: Some(SourceChange {
20 label: "create module",
21 source_file_edits: [],
22 file_system_edits: [CreateFile { source_root: SourceRootId(0), path: "foo.rs" }],
23 cursor_position: None }),
24 severity: Error }]"#,
25 &diagnostics,
26 );
27} 15}
28 16
29// FIXME: move this test to hir 17// FIXME: move this test to hir
@@ -31,7 +19,7 @@ fn test_unresolved_module_diagnostic() {
31fn test_unresolved_module_diagnostic_no_diag_for_inline_mode() { 19fn test_unresolved_module_diagnostic_no_diag_for_inline_mode() {
32 let (analysis, file_id) = single_file("mod foo {}"); 20 let (analysis, file_id) = single_file("mod foo {}");
33 let diagnostics = analysis.diagnostics(file_id).unwrap(); 21 let diagnostics = analysis.diagnostics(file_id).unwrap();
34 assert_eq_dbg(r#"[]"#, &diagnostics); 22 assert!(diagnostics.is_empty());
35} 23}
36 24
37#[test] 25#[test]
diff --git a/crates/ra_ide_api/tests/test/runnables.rs b/crates/ra_ide_api/tests/test/runnables.rs
deleted file mode 100644
index da8d5e0d5..000000000
--- a/crates/ra_ide_api/tests/test/runnables.rs
+++ /dev/null
@@ -1,109 +0,0 @@
1use test_utils::assert_eq_dbg;
2
3use ra_ide_api::mock_analysis::analysis_and_position;
4
5#[test]
6fn test_runnables() {
7 let (analysis, pos) = analysis_and_position(
8 r#"
9 //- /lib.rs
10 <|> //empty
11 fn main() {}
12
13 #[test]
14 fn test_foo() {}
15
16 #[test]
17 #[ignore]
18 fn test_foo() {}
19 "#,
20 );
21 let runnables = analysis.runnables(pos.file_id).unwrap();
22 assert_eq_dbg(
23 r#"[Runnable { range: [1; 21), kind: Bin },
24 Runnable { range: [22; 46), kind: Test { name: "test_foo" } },
25 Runnable { range: [47; 81), kind: Test { name: "test_foo" } }]"#,
26 &runnables,
27 )
28}
29
30#[test]
31fn test_runnables_module() {
32 let (analysis, pos) = analysis_and_position(
33 r#"
34 //- /lib.rs
35 <|> //empty
36 mod test_mod {
37 #[test]
38 fn test_foo1() {}
39 }
40 "#,
41 );
42 let runnables = analysis.runnables(pos.file_id).unwrap();
43 assert_eq_dbg(
44 r#"[Runnable { range: [1; 59), kind: TestMod { path: "test_mod" } },
45 Runnable { range: [28; 57), kind: Test { name: "test_foo1" } }]"#,
46 &runnables,
47 )
48}
49
50#[test]
51fn test_runnables_one_depth_layer_module() {
52 let (analysis, pos) = analysis_and_position(
53 r#"
54 //- /lib.rs
55 <|> //empty
56 mod foo {
57 mod test_mod {
58 #[test]
59 fn test_foo1() {}
60 }
61 }
62 "#,
63 );
64 let runnables = analysis.runnables(pos.file_id).unwrap();
65 assert_eq_dbg(
66 r#"[Runnable { range: [23; 85), kind: TestMod { path: "foo::test_mod" } },
67 Runnable { range: [46; 79), kind: Test { name: "test_foo1" } }]"#,
68 &runnables,
69 )
70}
71
72#[test]
73fn test_runnables_multiple_depth_module() {
74 let (analysis, pos) = analysis_and_position(
75 r#"
76 //- /lib.rs
77 <|> //empty
78 mod foo {
79 mod bar {
80 mod test_mod {
81 #[test]
82 fn test_foo1() {}
83 }
84 }
85 }
86 "#,
87 );
88 let runnables = analysis.runnables(pos.file_id).unwrap();
89 assert_eq_dbg(
90 r#"[Runnable { range: [41; 115), kind: TestMod { path: "foo::bar::test_mod" } },
91 Runnable { range: [68; 105), kind: Test { name: "test_foo1" } }]"#,
92 &runnables,
93 )
94}
95
96#[test]
97fn test_runnables_no_test_function_in_module() {
98 let (analysis, pos) = analysis_and_position(
99 r#"
100 //- /lib.rs
101 <|> //empty
102 mod test_mod {
103 fn foo1() {}
104 }
105 "#,
106 );
107 let runnables = analysis.runnables(pos.file_id).unwrap();
108 assert_eq_dbg(r#"[]"#, &runnables)
109}
diff --git a/crates/ra_ide_api/tests/test/snapshots/test__unresolved_module_diagnostic.snap b/crates/ra_ide_api/tests/test/snapshots/test__unresolved_module_diagnostic.snap
new file mode 100644
index 000000000..1b41e2b00
--- /dev/null
+++ b/crates/ra_ide_api/tests/test/snapshots/test__unresolved_module_diagnostic.snap
@@ -0,0 +1,26 @@
1Created: 2019-01-15T11:15:20.891129945+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api/tests/test/main.rs
4
5[
6 Diagnostic {
7 message: "unresolved module",
8 range: [4; 7),
9 fix: Some(
10 SourceChange {
11 label: "create module",
12 source_file_edits: [],
13 file_system_edits: [
14 CreateFile {
15 source_root: SourceRootId(
16 0
17 ),
18 path: "foo.rs"
19 }
20 ],
21 cursor_position: None
22 }
23 ),
24 severity: Error
25 }
26]
diff --git a/crates/ra_ide_api_light/Cargo.toml b/crates/ra_ide_api_light/Cargo.toml
index 8c192fca6..16cf228e7 100644
--- a/crates/ra_ide_api_light/Cargo.toml
+++ b/crates/ra_ide_api_light/Cargo.toml
@@ -17,3 +17,4 @@ ra_text_edit = { path = "../ra_text_edit" }
17[dev-dependencies] 17[dev-dependencies]
18test_utils = { path = "../test_utils" } 18test_utils = { path = "../test_utils" }
19proptest = "0.8.7" 19proptest = "0.8.7"
20insta = "0.1.4"
diff --git a/crates/ra_ide_api_light/src/lib.rs b/crates/ra_ide_api_light/src/lib.rs
index 72fba9402..9dd72701d 100644
--- a/crates/ra_ide_api_light/src/lib.rs
+++ b/crates/ra_ide_api_light/src/lib.rs
@@ -132,8 +132,9 @@ pub fn syntax_tree(file: &SourceFile) -> String {
132#[cfg(test)] 132#[cfg(test)]
133mod tests { 133mod tests {
134 use ra_syntax::AstNode; 134 use ra_syntax::AstNode;
135 use insta::assert_debug_snapshot_matches;
135 136
136 use crate::test_utils::{add_cursor, assert_eq_dbg, assert_eq_text, extract_offset}; 137 use crate::test_utils::{add_cursor, assert_eq_text, extract_offset};
137 138
138 use super::*; 139 use super::*;
139 140
@@ -147,15 +148,7 @@ fn main() {}
147"#, 148"#,
148 ); 149 );
149 let hls = highlight(file.syntax()); 150 let hls = highlight(file.syntax());
150 assert_eq_dbg( 151 assert_debug_snapshot_matches!("highlighting", hls);
151 r#"[HighlightedRange { range: [1; 11), tag: "comment" },
152 HighlightedRange { range: [12; 14), tag: "keyword" },
153 HighlightedRange { range: [15; 19), tag: "function" },
154 HighlightedRange { range: [29; 37), tag: "macro" },
155 HighlightedRange { range: [38; 50), tag: "string" },
156 HighlightedRange { range: [52; 54), tag: "literal" }]"#,
157 &hls,
158 );
159 } 152 }
160 153
161 #[test] 154 #[test]
diff --git a/crates/ra_ide_api_light/src/snapshots/tests__file_structure.snap b/crates/ra_ide_api_light/src/snapshots/tests__file_structure.snap
new file mode 100644
index 000000000..10eb5c724
--- /dev/null
+++ b/crates/ra_ide_api_light/src/snapshots/tests__file_structure.snap
@@ -0,0 +1,80 @@
1Created: 2019-01-15T11:15:21.073862814+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api_light/src/structure.rs
4
5[
6 StructureNode {
7 parent: None,
8 label: "Foo",
9 navigation_range: [8; 11),
10 node_range: [1; 26),
11 kind: STRUCT_DEF
12 },
13 StructureNode {
14 parent: Some(
15 0
16 ),
17 label: "x",
18 navigation_range: [18; 19),
19 node_range: [18; 24),
20 kind: NAMED_FIELD_DEF
21 },
22 StructureNode {
23 parent: None,
24 label: "m",
25 navigation_range: [32; 33),
26 node_range: [28; 53),
27 kind: MODULE
28 },
29 StructureNode {
30 parent: Some(
31 2
32 ),
33 label: "bar",
34 navigation_range: [43; 46),
35 node_range: [40; 51),
36 kind: FN_DEF
37 },
38 StructureNode {
39 parent: None,
40 label: "E",
41 navigation_range: [60; 61),
42 node_range: [55; 75),
43 kind: ENUM_DEF
44 },
45 StructureNode {
46 parent: None,
47 label: "T",
48 navigation_range: [81; 82),
49 node_range: [76; 88),
50 kind: TYPE_DEF
51 },
52 StructureNode {
53 parent: None,
54 label: "S",
55 navigation_range: [96; 97),
56 node_range: [89; 108),
57 kind: STATIC_DEF
58 },
59 StructureNode {
60 parent: None,
61 label: "C",
62 navigation_range: [115; 116),
63 node_range: [109; 127),
64 kind: CONST_DEF
65 },
66 StructureNode {
67 parent: None,
68 label: "impl E",
69 navigation_range: [134; 135),
70 node_range: [129; 138),
71 kind: IMPL_BLOCK
72 },
73 StructureNode {
74 parent: None,
75 label: "impl fmt::Debug for E",
76 navigation_range: [160; 161),
77 node_range: [140; 164),
78 kind: IMPL_BLOCK
79 }
80]
diff --git a/crates/ra_ide_api_light/src/snapshots/tests__highlighting.snap b/crates/ra_ide_api_light/src/snapshots/tests__highlighting.snap
new file mode 100644
index 000000000..d8f44a713
--- /dev/null
+++ b/crates/ra_ide_api_light/src/snapshots/tests__highlighting.snap
@@ -0,0 +1,30 @@
1Created: 2019-01-15T11:15:21.073858657+00:00
2Creator: [email protected]
3Source: crates/ra_ide_api_light/src/lib.rs
4
5[
6 HighlightedRange {
7 range: [1; 11),
8 tag: "comment"
9 },
10 HighlightedRange {
11 range: [12; 14),
12 tag: "keyword"
13 },
14 HighlightedRange {
15 range: [15; 19),
16 tag: "function"
17 },
18 HighlightedRange {
19 range: [29; 37),
20 tag: "macro"
21 },
22 HighlightedRange {
23 range: [38; 50),
24 tag: "string"
25 },
26 HighlightedRange {
27 range: [52; 54),
28 tag: "literal"
29 }
30]
diff --git a/crates/ra_ide_api_light/src/structure.rs b/crates/ra_ide_api_light/src/structure.rs
index 8bd57555f..3c6f39e16 100644
--- a/crates/ra_ide_api_light/src/structure.rs
+++ b/crates/ra_ide_api_light/src/structure.rs
@@ -87,7 +87,7 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> {
87#[cfg(test)] 87#[cfg(test)]
88mod tests { 88mod tests {
89 use super::*; 89 use super::*;
90 use test_utils::assert_eq_dbg; 90 use insta::assert_debug_snapshot_matches;
91 91
92 #[test] 92 #[test]
93 fn test_file_structure() { 93 fn test_file_structure() {
@@ -112,18 +112,6 @@ impl fmt::Debug for E {}
112"#, 112"#,
113 ); 113 );
114 let structure = file_structure(&file); 114 let structure = file_structure(&file);
115 assert_eq_dbg( 115 assert_debug_snapshot_matches!("file_structure", structure);
116 r#"[StructureNode { parent: None, label: "Foo", navigation_range: [8; 11), node_range: [1; 26), kind: STRUCT_DEF },
117 StructureNode { parent: Some(0), label: "x", navigation_range: [18; 19), node_range: [18; 24), kind: NAMED_FIELD_DEF },
118 StructureNode { parent: None, label: "m", navigation_range: [32; 33), node_range: [28; 53), kind: MODULE },
119 StructureNode { parent: Some(2), label: "bar", navigation_range: [43; 46), node_range: [40; 51), kind: FN_DEF },
120 StructureNode { parent: None, label: "E", navigation_range: [60; 61), node_range: [55; 75), kind: ENUM_DEF },
121 StructureNode { parent: None, label: "T", navigation_range: [81; 82), node_range: [76; 88), kind: TYPE_DEF },
122 StructureNode { parent: None, label: "S", navigation_range: [96; 97), node_range: [89; 108), kind: STATIC_DEF },
123 StructureNode { parent: None, label: "C", navigation_range: [115; 116), node_range: [109; 127), kind: CONST_DEF },
124 StructureNode { parent: None, label: "impl E", navigation_range: [134; 135), node_range: [129; 138), kind: IMPL_BLOCK },
125 StructureNode { parent: None, label: "impl fmt::Debug for E", navigation_range: [160; 161), node_range: [140; 164), kind: IMPL_BLOCK }]"#,
126 &structure,
127 )
128 } 116 }
129} 117}
diff --git a/crates/test_utils/src/lib.rs b/crates/test_utils/src/lib.rs
index 9b1c9c9a0..6489033dd 100644
--- a/crates/test_utils/src/lib.rs
+++ b/crates/test_utils/src/lib.rs
@@ -1,8 +1,6 @@
1use std::fmt;
2use std::fs; 1use std::fs;
3use std::path::{Path, PathBuf}; 2use std::path::{Path, PathBuf};
4 3
5use itertools::Itertools;
6use text_unit::{TextRange, TextUnit}; 4use text_unit::{TextRange, TextUnit};
7use serde_json::Value; 5use serde_json::Value;
8 6
@@ -31,12 +29,6 @@ macro_rules! assert_eq_text {
31 }}; 29 }};
32} 30}
33 31
34pub fn assert_eq_dbg(expected: &str, actual: &impl fmt::Debug) {
35 let actual = format!("{:?}", actual);
36 let expected = expected.lines().map(|l| l.trim()).join(" ");
37 assert_eq!(expected, actual);
38}
39
40pub fn extract_offset(text: &str) -> (TextUnit, String) { 32pub fn extract_offset(text: &str) -> (TextUnit, String) {
41 match try_extract_offset(text) { 33 match try_extract_offset(text) {
42 None => panic!("text should contain cursor marker"), 34 None => panic!("text should contain cursor marker"),