diff options
author | Jan Jansen <[email protected]> | 2018-12-27 20:45:16 +0000 |
---|---|---|
committer | Jan Jansen <[email protected]> | 2018-12-31 14:00:04 +0000 |
commit | 05daa86634b41aa3f311a1ac0b02bf7fed7ed569 (patch) | |
tree | b703cfe2fc7788631703141d9f4be63b0f5d7fe5 /crates/ra_editor | |
parent | 690826871202c77326836a895a38532ebd83c54b (diff) |
Make modules with tests runnable
Fixes #154
Diffstat (limited to 'crates/ra_editor')
-rw-r--r-- | crates/ra_editor/src/lib.rs | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/crates/ra_editor/src/lib.rs b/crates/ra_editor/src/lib.rs index a65637d52..412b8aea9 100644 --- a/crates/ra_editor/src/lib.rs +++ b/crates/ra_editor/src/lib.rs | |||
@@ -22,7 +22,7 @@ pub use self::{ | |||
22 | use ra_text_edit::{TextEdit, TextEditBuilder}; | 22 | use ra_text_edit::{TextEdit, TextEditBuilder}; |
23 | use ra_syntax::{ | 23 | use ra_syntax::{ |
24 | algo::find_leaf_at_offset, | 24 | algo::find_leaf_at_offset, |
25 | ast::{self, AstNode, NameOwner}, | 25 | ast::{self, AstNode}, |
26 | SourceFileNode, | 26 | SourceFileNode, |
27 | SyntaxKind::{self, *}, | 27 | SyntaxKind::{self, *}, |
28 | SyntaxNodeRef, TextRange, TextUnit, Direction, | 28 | SyntaxNodeRef, TextRange, TextUnit, Direction, |
@@ -49,18 +49,6 @@ pub struct Diagnostic { | |||
49 | pub fix: Option<LocalEdit>, | 49 | pub fix: Option<LocalEdit>, |
50 | } | 50 | } |
51 | 51 | ||
52 | #[derive(Debug)] | ||
53 | pub struct Runnable { | ||
54 | pub range: TextRange, | ||
55 | pub kind: RunnableKind, | ||
56 | } | ||
57 | |||
58 | #[derive(Debug)] | ||
59 | pub enum RunnableKind { | ||
60 | Test { name: String }, | ||
61 | Bin, | ||
62 | } | ||
63 | |||
64 | pub fn matching_brace(file: &SourceFileNode, offset: TextUnit) -> Option<TextUnit> { | 52 | pub fn matching_brace(file: &SourceFileNode, offset: TextUnit) -> Option<TextUnit> { |
65 | const BRACES: &[SyntaxKind] = &[ | 53 | const BRACES: &[SyntaxKind] = &[ |
66 | L_CURLY, R_CURLY, L_BRACK, R_BRACK, L_PAREN, R_PAREN, L_ANGLE, R_ANGLE, | 54 | L_CURLY, R_CURLY, L_BRACK, R_BRACK, L_PAREN, R_PAREN, L_ANGLE, R_ANGLE, |
@@ -133,29 +121,6 @@ pub fn syntax_tree(file: &SourceFileNode) -> String { | |||
133 | ::ra_syntax::utils::dump_tree(file.syntax()) | 121 | ::ra_syntax::utils::dump_tree(file.syntax()) |
134 | } | 122 | } |
135 | 123 | ||
136 | pub fn runnables(file: &SourceFileNode) -> Vec<Runnable> { | ||
137 | file.syntax() | ||
138 | .descendants() | ||
139 | .filter_map(ast::FnDef::cast) | ||
140 | .filter_map(|f| { | ||
141 | let name = f.name()?.text(); | ||
142 | let kind = if name == "main" { | ||
143 | RunnableKind::Bin | ||
144 | } else if f.has_atom_attr("test") { | ||
145 | RunnableKind::Test { | ||
146 | name: name.to_string(), | ||
147 | } | ||
148 | } else { | ||
149 | return None; | ||
150 | }; | ||
151 | Some(Runnable { | ||
152 | range: f.syntax().range(), | ||
153 | kind, | ||
154 | }) | ||
155 | }) | ||
156 | .collect() | ||
157 | } | ||
158 | |||
159 | pub fn find_node_at_offset<'a, N: AstNode<'a>>( | 124 | pub fn find_node_at_offset<'a, N: AstNode<'a>>( |
160 | syntax: SyntaxNodeRef<'a>, | 125 | syntax: SyntaxNodeRef<'a>, |
161 | offset: TextUnit, | 126 | offset: TextUnit, |
@@ -191,29 +156,6 @@ fn main() {} | |||
191 | } | 156 | } |
192 | 157 | ||
193 | #[test] | 158 | #[test] |
194 | fn test_runnables() { | ||
195 | let file = SourceFileNode::parse( | ||
196 | r#" | ||
197 | fn main() {} | ||
198 | |||
199 | #[test] | ||
200 | fn test_foo() {} | ||
201 | |||
202 | #[test] | ||
203 | #[ignore] | ||
204 | fn test_foo() {} | ||
205 | "#, | ||
206 | ); | ||
207 | let runnables = runnables(&file); | ||
208 | assert_eq_dbg( | ||
209 | r#"[Runnable { range: [1; 13), kind: Bin }, | ||
210 | Runnable { range: [15; 39), kind: Test { name: "test_foo" } }, | ||
211 | Runnable { range: [41; 75), kind: Test { name: "test_foo" } }]"#, | ||
212 | &runnables, | ||
213 | ) | ||
214 | } | ||
215 | |||
216 | #[test] | ||
217 | fn test_matching_brace() { | 159 | fn test_matching_brace() { |
218 | fn do_check(before: &str, after: &str) { | 160 | fn do_check(before: &str, after: &str) { |
219 | let (pos, before) = extract_offset(before); | 161 | let (pos, before) = extract_offset(before); |