Skip to content

Commit 5aebf54

Browse files
Add tests
1 parent dbf70cd commit 5aebf54

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed

crates/ide/src/completion/complete_mod.rs

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,156 @@ fn module_chain_to_containing_module_file(
147147

148148
path
149149
}
150+
151+
#[cfg(test)]
152+
mod 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+
}

0 commit comments

Comments
 (0)