@@ -147,3 +147,156 @@ fn module_chain_to_containing_module_file(
147
147
148
148
path
149
149
}
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