diff options
author | David Wood <[email protected]> | 2019-03-06 23:53:26 +0000 |
---|---|---|
committer | David Wood <[email protected]> | 2019-03-07 00:06:46 +0000 |
commit | 3bc33ae712d24f19f348828b0b18cda3d09a2360 (patch) | |
tree | 6a3d733ed36819d020d9280d561f048004e45020 /crates/ra_lsp_server | |
parent | 614dd3c34721a4f97e8c4f1eb89aed4362338ebb (diff) |
Add test demonstrating logic for handling deps.
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/tests/heavy_tests/main.rs | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/crates/ra_lsp_server/tests/heavy_tests/main.rs b/crates/ra_lsp_server/tests/heavy_tests/main.rs index 641f84cfc..8e4e1fb88 100644 --- a/crates/ra_lsp_server/tests/heavy_tests/main.rs +++ b/crates/ra_lsp_server/tests/heavy_tests/main.rs | |||
@@ -279,7 +279,7 @@ fn main() {} | |||
279 | PATH = tmp_dir.path().display() | 279 | PATH = tmp_dir.path().display() |
280 | ); | 280 | ); |
281 | let server = project_with_tmpdir(tmp_dir, &code); | 281 | let server = project_with_tmpdir(tmp_dir, &code); |
282 | server.wait_for_feedback("workspace loaded"); | 282 | server.wait_for_message("workspace loaded"); |
283 | let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None }; | 283 | let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None }; |
284 | server.request::<CodeActionRequest>( | 284 | server.request::<CodeActionRequest>( |
285 | CodeActionParams { | 285 | CodeActionParams { |
@@ -321,3 +321,46 @@ fn main() {} | |||
321 | json!([]), | 321 | json!([]), |
322 | ); | 322 | ); |
323 | } | 323 | } |
324 | |||
325 | #[test] | ||
326 | fn completes_items_from_second_crate_in_json_project() { | ||
327 | let tmp_dir = TempDir::new().unwrap(); | ||
328 | let code = format!( | ||
329 | r#" | ||
330 | //- rust-project.json | ||
331 | {{ | ||
332 | "roots": [ "{PATH}" ], | ||
333 | "crates": [ | ||
334 | {{ | ||
335 | "root_module": "{PATH}/foo/lib.rs", | ||
336 | "deps": [ | ||
337 | {{ | ||
338 | "name": "bar", | ||
339 | "crate": 1 | ||
340 | }} | ||
341 | ], | ||
342 | "edition": "2015" | ||
343 | }}, | ||
344 | {{ "root_module": "{PATH}/bar/lib.rs", "deps": [], "edition": "2015" }} | ||
345 | ] | ||
346 | }} | ||
347 | |||
348 | //- bar/lib.rs | ||
349 | pub struct Spam; | ||
350 | pub struct CannedMeat; | ||
351 | |||
352 | //- foo/lib.rs | ||
353 | extern crate bar; | ||
354 | use bar::Spam; | ||
355 | "#, | ||
356 | PATH = tmp_dir.path().display() | ||
357 | ); | ||
358 | let server = project_with_tmpdir(tmp_dir, &code); | ||
359 | server.wait_for_message("workspace loaded"); | ||
360 | let res = server.send_request::<Completion>(CompletionParams { | ||
361 | text_document: server.doc_id("foo/lib.rs"), | ||
362 | context: None, | ||
363 | position: Position::new(1, 10), | ||
364 | }); | ||
365 | assert!(format!("{}", res).contains("CannedMeat")); | ||
366 | } | ||