@@ -260,6 +260,7 @@ fn main() {}
260
260
"executableArgs": ["test_eggs", "--exact", "--show-output"],
261
261
"cargoExtraArgs": [],
262
262
"overrideCargo": null,
263
+ "cwd": server.path().join("foo"),
263
264
"workspaceRoot": server.path().join("foo")
264
265
},
265
266
"kind": "cargo",
@@ -279,6 +280,7 @@ fn main() {}
279
280
{
280
281
"args": {
281
282
"overrideCargo": null,
283
+ "cwd": server.path().join("foo"),
282
284
"workspaceRoot": server.path().join("foo"),
283
285
"cargoArgs": [
284
286
"test",
@@ -325,6 +327,7 @@ fn main() {}
325
327
"executableArgs": [],
326
328
"cargoExtraArgs": [],
327
329
"overrideCargo": null,
330
+ "cwd": server.path().join("foo"),
328
331
"workspaceRoot": server.path().join("foo")
329
332
},
330
333
"kind": "cargo",
@@ -336,6 +339,7 @@ fn main() {}
336
339
"executableArgs": [],
337
340
"cargoExtraArgs": [],
338
341
"overrideCargo": null,
342
+ "cwd": server.path().join("foo"),
339
343
"workspaceRoot": server.path().join("foo")
340
344
},
341
345
"kind": "cargo",
@@ -415,6 +419,7 @@ mod tests {
415
419
"args": {
416
420
"overrideCargo": null,
417
421
"workspaceRoot": server.path().join(runnable),
422
+ "cwd": server.path().join(runnable),
418
423
"cargoArgs": [
419
424
"test",
420
425
"--package",
@@ -432,6 +437,94 @@ mod tests {
432
437
}
433
438
}
434
439
440
+ // The main fn in packages should be run from the workspace root
441
+ #[test]
442
+ fn test_runnables_cwd() {
443
+ if skip_slow_tests() {
444
+ return;
445
+ }
446
+
447
+ let server = Project::with_fixture(
448
+ r#"
449
+ //- /foo/Cargo.toml
450
+ [workspace]
451
+ members = ["mainpkg", "otherpkg"]
452
+
453
+ //- /foo/mainpkg/Cargo.toml
454
+ [package]
455
+ name = "mainpkg"
456
+ version = "0.1.0"
457
+
458
+ //- /foo/mainpkg/src/main.rs
459
+ fn main() {}
460
+
461
+ //- /foo/otherpkg/Cargo.toml
462
+ [package]
463
+ name = "otherpkg"
464
+ version = "0.1.0"
465
+
466
+ //- /foo/otherpkg/src/lib.rs
467
+ #[test]
468
+ fn otherpkg() {}
469
+ "#,
470
+ )
471
+ .root("foo")
472
+ .server()
473
+ .wait_until_workspace_is_loaded();
474
+
475
+ server.request::<Runnables>(
476
+ RunnablesParams { text_document: server.doc_id("foo/mainpkg/src/main.rs"), position: None },
477
+ json!([
478
+ "{...}",
479
+ {
480
+ "label": "cargo test -p mainpkg --all-targets",
481
+ "kind": "cargo",
482
+ "args": {
483
+ "overrideCargo": null,
484
+ "workspaceRoot": server.path().join("foo"),
485
+ "cwd": server.path().join("foo"),
486
+ "cargoArgs": [
487
+ "test",
488
+ "--package",
489
+ "mainpkg",
490
+ "--all-targets"
491
+ ],
492
+ "cargoExtraArgs": [],
493
+ "executableArgs": []
494
+ },
495
+ },
496
+ "{...}",
497
+ "{...}"
498
+ ]),
499
+ );
500
+
501
+ server.request::<Runnables>(
502
+ RunnablesParams { text_document: server.doc_id("foo/otherpkg/src/lib.rs"), position: None },
503
+ json!([
504
+ "{...}",
505
+ {
506
+ "label": "cargo test -p otherpkg --all-targets",
507
+ "kind": "cargo",
508
+ "args": {
509
+ "overrideCargo": null,
510
+ "workspaceRoot": server.path().join("foo"),
511
+ "cwd": server.path().join("foo").join("otherpkg"),
512
+ "cargoArgs": [
513
+ "test",
514
+ "--package",
515
+ "otherpkg",
516
+ "--all-targets"
517
+ ],
518
+ "cargoExtraArgs": [],
519
+ "executableArgs": []
520
+ },
521
+ },
522
+ "{...}",
523
+ "{...}"
524
+ ]),
525
+ );
526
+ }
527
+
435
528
#[test]
436
529
fn test_format_document() {
437
530
if skip_slow_tests() {
0 commit comments