aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-08-26 18:41:45 +0100
committerGitHub <[email protected]>2020-08-26 18:41:45 +0100
commit7e012ae8b54705bc254154cdff3a503cce3299a7 (patch)
treec1105a002b0e866bbd397188841f46243b336b6d
parent3d6c4c143b4b4c74810318eca1b5493e43535fff (diff)
parent964219f0be87d189e13dd63a6ffc4d9d53eafbb4 (diff)
Merge #5893
5893: Allow running a test as a binary r=matklad a=jonas-schievink If a test uses `harness = false`, it just contains an `fn main` that is executed via `cargo test`. This adds support for that. Note though that Cargo doesn't actually tell us whether `harness = false`, so this hint will always show up when you put an `fn main` into an integration test. Normally people shouldn't be doing that if they do use the harness though. Co-authored-by: Jonas Schievink <[email protected]>
-rw-r--r--crates/rust-analyzer/src/cargo_target_spec.rs6
-rw-r--r--crates/rust-analyzer/src/handlers.rs5
2 files changed, 9 insertions, 2 deletions
diff --git a/crates/rust-analyzer/src/cargo_target_spec.rs b/crates/rust-analyzer/src/cargo_target_spec.rs
index 3041915e1..ddc028148 100644
--- a/crates/rust-analyzer/src/cargo_target_spec.rs
+++ b/crates/rust-analyzer/src/cargo_target_spec.rs
@@ -72,7 +72,11 @@ impl CargoTargetSpec {
72 extra_args.push("--nocapture".to_string()); 72 extra_args.push("--nocapture".to_string());
73 } 73 }
74 RunnableKind::Bin => { 74 RunnableKind::Bin => {
75 args.push("run".to_string()); 75 let subcommand = match spec {
76 Some(CargoTargetSpec { target_kind: TargetKind::Test, .. }) => "test",
77 _ => "run",
78 };
79 args.push(subcommand.to_string());
76 if let Some(spec) = spec { 80 if let Some(spec) = spec {
77 spec.push_to(&mut args, kind); 81 spec.push_to(&mut args, kind);
78 } 82 }
diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs
index 33e60b500..8568f7b05 100644
--- a/crates/rust-analyzer/src/handlers.rs
+++ b/crates/rust-analyzer/src/handlers.rs
@@ -1399,7 +1399,10 @@ fn should_skip_target(runnable: &Runnable, cargo_spec: Option<&CargoTargetSpec>)
1399 RunnableKind::Bin => { 1399 RunnableKind::Bin => {
1400 // Do not suggest binary run on other target than binary 1400 // Do not suggest binary run on other target than binary
1401 match &cargo_spec { 1401 match &cargo_spec {
1402 Some(spec) => !matches!(spec.target_kind, TargetKind::Bin | TargetKind::Example), 1402 Some(spec) => !matches!(
1403 spec.target_kind,
1404 TargetKind::Bin | TargetKind::Example | TargetKind::Test
1405 ),
1403 None => true, 1406 None => true,
1404 } 1407 }
1405 } 1408 }