aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide/src')
-rw-r--r--crates/ide/src/completion/complete_mod.rs153
1 files changed, 153 insertions, 0 deletions
diff --git a/crates/ide/src/completion/complete_mod.rs b/crates/ide/src/completion/complete_mod.rs
index b5f2d636c..049e99674 100644
--- a/crates/ide/src/completion/complete_mod.rs
+++ b/crates/ide/src/completion/complete_mod.rs
@@ -147,3 +147,156 @@ fn module_chain_to_containing_module_file(
147 147
148 path 148 path
149} 149}
150
151#[cfg(test)]
152mod tests {
153 use crate::completion::{test_utils::completion_list, CompletionKind};
154 use expect_test::{expect, Expect};
155
156 fn check(ra_fixture: &str, expect: Expect) {
157 let actual = completion_list(ra_fixture, CompletionKind::Magic);
158 expect.assert_eq(&actual);
159 }
160
161 #[test]
162 fn lib_module_completion() {
163 check(
164 r#"
165 //- /lib.rs
166 mod <|>
167 //- /foo.rs
168 fn foo() {}
169 //- /foo/ignored_foo.rs
170 fn ignored_foo() {}
171 //- /bar/mod.rs
172 fn bar() {}
173 //- /bar/ignored_bar.rs
174 fn ignored_bar() {}
175 "#,
176 expect![[r#"
177 md bar;
178 md foo;
179 "#]],
180 );
181 }
182
183 #[test]
184 fn main_module_completion() {
185 check(
186 r#"
187 //- /main.rs
188 mod <|>
189 //- /foo.rs
190 fn foo() {}
191 //- /foo/ignored_foo.rs
192 fn ignored_foo() {}
193 //- /bar/mod.rs
194 fn bar() {}
195 //- /bar/ignored_bar.rs
196 fn ignored_bar() {}
197 "#,
198 expect![[r#"
199 md bar;
200 md foo;
201 "#]],
202 );
203 }
204
205 #[test]
206 fn main_test_module_completion() {
207 check(
208 r#"
209 //- /main.rs
210 mod tests {
211 mod <|>;
212 }
213 //- /tests/foo.rs
214 fn foo() {}
215 "#,
216 expect![[r#"
217 md foo
218 "#]],
219 );
220 }
221
222 #[test]
223 fn directly_nested_module_completion() {
224 check(
225 r#"
226 //- /lib.rs
227 mod foo;
228 //- /foo.rs
229 mod <|>;
230 //- /foo/bar.rs
231 fn bar() {}
232 //- /foo/bar/ignored_bar.rs
233 fn ignored_bar() {}
234 //- /foo/baz/mod.rs
235 fn baz() {}
236 //- /foo/moar/ignored_moar.rs
237 fn ignored_moar() {}
238 "#,
239 expect![[r#"
240 md bar
241 md baz
242 "#]],
243 );
244 }
245
246 #[test]
247 fn nested_in_source_module_completion() {
248 check(
249 r#"
250 //- /lib.rs
251 mod foo;
252 //- /foo.rs
253 mod bar {
254 mod <|>
255 }
256 //- /foo/bar/baz.rs
257 fn baz() {}
258 "#,
259 expect![[r#"
260 md baz;
261 "#]],
262 );
263 }
264
265 // FIXME binart modules are not picked up in tests
266 // #[test]
267 // fn regular_bin_module_completion() {
268 // check(
269 // r#"
270 // //- /src/main.rs
271 // fn main() {}
272 // //- /src/main/foo.rs
273 // mod <|>
274 // //- /src/main/bar.rs
275 // fn bar() {}
276 // //- /src/main/bar/bar_ignored.rs
277 // fn bar_ignored() {}
278 // "#,
279 // expect![[r#"
280 // md bar;
281 // "#]],
282 // );
283 // }
284
285 #[test]
286 fn already_declared_bin_module_completion_omitted() {
287 check(
288 r#"
289 //- /src/main.rs
290 fn main() {}
291 //- /src/main/foo.rs
292 mod <|>
293 //- /src/main/bar.rs
294 mod foo;
295 fn bar() {}
296 //- /src/main/bar/bar_ignored.rs
297 fn bar_ignored() {}
298 "#,
299 expect![[r#""#]],
300 );
301 }
302}