Skip to content

Commit 3fe8ace

Browse files
committed
test: use insta and include file for testing
1 parent 0d3d6ab commit 3fe8ace

33 files changed

+518
-479
lines changed

Cargo.lock

Lines changed: 44 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ tree-sitter = "0.22.6"
2323
tracing-appender = "0.2.3"
2424
protols-tree-sitter-proto = "0.2.0"
2525
walkdir = "2.5.0"
26+
27+
[dev-dependencies]
28+
insta = { version = "1.39.0", features = ["yaml"] }

src/parser/definition.rs

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ impl ParsedTree {
3030

3131
#[cfg(test)]
3232
mod test {
33-
use async_lsp::lsp_types::{Position, Range, Url};
33+
use async_lsp::lsp_types::{Position, Url};
34+
use insta::assert_yaml_snapshot;
3435

3536
use crate::parser::ProtoParser;
3637

3738
#[test]
3839
fn test_goto_definition() {
39-
let url = "file://foo/bar.proto";
40+
let url: Url = "file://foo/bar.proto".parse().unwrap();
4041
let posinvalid = Position {
4142
line: 0,
4243
character: 1,
@@ -45,42 +46,12 @@ mod test {
4546
line: 10,
4647
character: 5,
4748
};
48-
let contents = r#"syntax = "proto3";
49+
let contents = include_str!("input/test_goto_definition.proto");
50+
let parsed = ProtoParser::new().parse(url, contents);
4951

50-
package com.book;
51-
52-
message Book {
53-
message Author {
54-
string name = 1;
55-
string country = 2;
56-
};
57-
58-
Author author = 1;
59-
string isbn = 2;
60-
}
61-
"#;
62-
let parsed = ProtoParser::new().parse(url.parse().unwrap(), contents);
6352
assert!(parsed.is_some());
6453
let tree = parsed.unwrap();
65-
let res = tree.definition(&posauthor, contents);
66-
67-
assert_eq!(res.len(), 1);
68-
assert_eq!(res[0].uri, Url::parse(url).unwrap());
69-
assert_eq!(
70-
res[0].range,
71-
Range {
72-
start: Position {
73-
line: 5,
74-
character: 12
75-
},
76-
end: Position {
77-
line: 5,
78-
character: 18
79-
},
80-
}
81-
);
82-
83-
let res = tree.definition(&posinvalid, contents);
84-
assert_eq!(res.len(), 0);
54+
assert_yaml_snapshot!(tree.definition(&posauthor, contents));
55+
assert_yaml_snapshot!(tree.definition(&posinvalid, contents));
8556
}
8657
}

src/parser/diagnostics.rs

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,64 +30,24 @@ impl ParsedTree {
3030

3131
#[cfg(test)]
3232
mod test {
33-
use async_lsp::lsp_types::{DiagnosticSeverity, Position, Range, Url};
33+
use async_lsp::lsp_types::Url;
34+
use insta::assert_yaml_snapshot;
3435

3536
use crate::parser::ProtoParser;
3637

3738
#[test]
3839
fn test_collect_parse_error() {
3940
let url: Url = "file://foo/bar.proto".parse().unwrap();
40-
let contents = r#"syntax = "proto3";
41-
42-
package test;
43-
44-
message Foo {
45-
reserved 1;
46-
reserved "baz";
47-
int bar = 2;
48-
}"#;
41+
let contents = include_str!("input/test_collect_parse_error1.proto");
4942

5043
let parsed = ProtoParser::new().parse(url.clone(), contents);
5144
assert!(parsed.is_some());
52-
let tree = parsed.unwrap();
53-
let diagnostics = tree.collect_parse_errors();
54-
assert_eq!(diagnostics.uri, url);
55-
assert_eq!(diagnostics.diagnostics.len(), 0);
56-
57-
let contents = r#"syntax = "proto3";
45+
assert_yaml_snapshot!(parsed.unwrap().collect_parse_errors());
5846

59-
package com.book;
47+
let contents = include_str!("input/test_collect_parse_error2.proto");
6048

61-
message Book {
62-
message Author {
63-
string name;
64-
string country = 2;
65-
};
66-
}"#;
6749
let parsed = ProtoParser::new().parse(url.clone(), contents);
6850
assert!(parsed.is_some());
69-
let tree = parsed.unwrap();
70-
let diagnostics = tree.collect_parse_errors();
71-
72-
assert_eq!(diagnostics.uri, url);
73-
assert_eq!(diagnostics.diagnostics.len(), 1);
74-
75-
let error = &diagnostics.diagnostics[0];
76-
assert_eq!(error.severity, Some(DiagnosticSeverity::ERROR));
77-
assert_eq!(error.source, Some("protols".to_owned()));
78-
assert_eq!(error.message, "Syntax error");
79-
assert_eq!(
80-
error.range,
81-
Range {
82-
start: Position {
83-
line: 6,
84-
character: 8
85-
},
86-
end: Position {
87-
line: 6,
88-
character: 19
89-
}
90-
}
91-
);
51+
assert_yaml_snapshot!(parsed.unwrap().collect_parse_errors());
9252
}
9353
}

src/parser/docsymbol.rs

Lines changed: 5 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -98,150 +98,21 @@ impl ParsedTree {
9898

9999
#[cfg(test)]
100100
mod test {
101-
use async_lsp::lsp_types::{DocumentSymbol, Position, Range, SymbolKind, Url};
101+
use async_lsp::lsp_types::Url;
102+
use insta::assert_yaml_snapshot;
102103

103104
use crate::parser::ProtoParser;
104105

105106
#[test]
106107
#[allow(deprecated)]
107108
fn test_document_symbols() {
108109
let uri: Url = "file://foo/bar/pro.proto".parse().unwrap();
109-
let contents = r#"syntax = "proto3";
110+
let contents = include_str!("input/test_document_symbols.proto");
110111

111-
package com.symbols;
112-
113-
// outer 1 comment
114-
message Outer1 {
115-
message Inner1 {
116-
string name = 1;
117-
};
118-
119-
Inner1 i = 1;
120-
}
121-
122-
message Outer2 {
123-
message Inner2 {
124-
string name = 1;
125-
};
126-
// Inner 3 comment here
127-
message Inner3 {
128-
string name = 1;
129-
130-
enum X {
131-
a = 1;
132-
b = 2;
133-
}
134-
}
135-
Inner1 i = 1;
136-
Inner2 y = 2;
137-
}
138-
139-
"#;
140112
let parsed = ProtoParser::new().parse(uri.clone(), contents);
141113
assert!(parsed.is_some());
114+
142115
let tree = parsed.unwrap();
143-
let res = tree.find_document_locations(contents);
144-
145-
assert_eq!(res.len(), 2);
146-
assert_eq!(
147-
res,
148-
vec!(
149-
DocumentSymbol {
150-
name: "Outer1".to_string(),
151-
detail: Some("outer 1 comment".to_string()),
152-
kind: SymbolKind::STRUCT,
153-
tags: None,
154-
range: Range {
155-
start: Position::new(5, 0),
156-
end: Position::new(11, 1),
157-
},
158-
selection_range: Range {
159-
start: Position::new(5, 8),
160-
end: Position::new(5, 14),
161-
},
162-
children: Some(vec!(DocumentSymbol {
163-
name: "Inner1".to_string(),
164-
detail: None,
165-
kind: SymbolKind::STRUCT,
166-
tags: None,
167-
deprecated: None,
168-
range: Range {
169-
start: Position::new(6, 4),
170-
end: Position::new(8, 5),
171-
},
172-
selection_range: Range {
173-
start: Position::new(6, 12),
174-
end: Position::new(6, 18),
175-
},
176-
children: Some(vec!()),
177-
},)),
178-
deprecated: None,
179-
},
180-
DocumentSymbol {
181-
name: "Outer2".to_string(),
182-
detail: None,
183-
kind: SymbolKind::STRUCT,
184-
tags: None,
185-
range: Range {
186-
start: Position::new(13, 0),
187-
end: Position::new(28, 1),
188-
},
189-
selection_range: Range {
190-
start: Position::new(13, 8),
191-
end: Position::new(13, 14),
192-
},
193-
children: Some(vec!(
194-
DocumentSymbol {
195-
name: "Inner2".to_string(),
196-
detail: None,
197-
kind: SymbolKind::STRUCT,
198-
tags: None,
199-
deprecated: None,
200-
range: Range {
201-
start: Position::new(14, 4),
202-
end: Position::new(16, 5),
203-
},
204-
selection_range: Range {
205-
start: Position::new(14, 12),
206-
end: Position::new(14, 18),
207-
},
208-
children: Some(vec!()),
209-
},
210-
DocumentSymbol {
211-
name: "Inner3".to_string(),
212-
detail: Some("Inner 3 comment here".to_string()),
213-
kind: SymbolKind::STRUCT,
214-
tags: None,
215-
deprecated: None,
216-
range: Range {
217-
start: Position::new(18, 4),
218-
end: Position::new(25, 5),
219-
},
220-
selection_range: Range {
221-
start: Position::new(18, 12),
222-
end: Position::new(18, 18),
223-
},
224-
children: Some(vec!(DocumentSymbol {
225-
name: "X".to_string(),
226-
detail: None,
227-
kind: SymbolKind::ENUM,
228-
tags: None,
229-
deprecated: None,
230-
range: Range {
231-
start: Position::new(21, 8),
232-
end: Position::new(24, 9),
233-
},
234-
selection_range: Range {
235-
start: Position::new(21, 13),
236-
end: Position::new(21, 14),
237-
},
238-
children: Some(vec!()),
239-
})),
240-
}
241-
)),
242-
deprecated: None,
243-
},
244-
)
245-
);
116+
assert_yaml_snapshot!(tree.find_document_locations(contents));
246117
}
247118
}

0 commit comments

Comments
 (0)