Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

Commit ec5eb94

Browse files
authored
Merge pull request #801 from Xanewok/cfg-test
Make cfg_test to match `cargo check --tests`
2 parents 85605e3 + 936d0fe commit ec5eb94

File tree

4 files changed

+13
-20
lines changed

4 files changed

+13
-20
lines changed

src/build/cargo.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ fn run_cargo(
153153

154154
// TODO: It might be feasible to keep this CargoOptions structure cached and regenerate
155155
// it on every relevant configuration change
156-
let (opts, rustflags, clear_env_rust_log) =
156+
let (opts, rustflags, clear_env_rust_log, cfg_test) =
157157
{
158158
// We mustn't lock configuration for the whole build process
159159
let rls_config = rls_config.lock().unwrap();
@@ -182,7 +182,7 @@ fn run_cargo(
182182
}
183183
}
184184

185-
(opts, rustflags, rls_config.clear_env_rust_log)
185+
(opts, rustflags, rls_config.clear_env_rust_log, rls_config.cfg_test)
186186
};
187187

188188
let spec = Packages::from_flags(false, Vec::new(), packages)?;
@@ -196,7 +196,7 @@ fn run_cargo(
196196
opts.bins,
197197
// TODO: Support more crate target types
198198
Vec::new(),
199-
false,
199+
cfg_test, // Check all integration tests under tests/
200200
Vec::new(),
201201
false,
202202
Vec::new(),
@@ -207,7 +207,7 @@ fn run_cargo(
207207
all_features: opts.all_features,
208208
no_default_features: opts.no_default_features,
209209
jobs: opts.jobs,
210-
..CompileOptions::default(&config, CompileMode::Check { test: false })
210+
..CompileOptions::default(&config, CompileMode::Check { test: cfg_test })
211211
};
212212

213213
// Create a custom environment for running cargo, the environment is reset
@@ -460,7 +460,7 @@ impl Executor for RlsExecutor {
460460
// Because we only try to emulate `cargo test` using `cargo check`, so for now
461461
// assume crate_type arg (i.e. in `cargo test` it isn't specified for --test targets)
462462
// and build test harness only for final crate type
463-
let crate_type = if config.all_targets {
463+
let crate_type = if config.all_targets || config.cfg_test {
464464
// Crate type may be undefined when `all_targets` is true, for example for integration tests
465465
crate_type.unwrap_or_else(|| "undefined".to_owned())
466466
} else {
@@ -470,15 +470,6 @@ impl Executor for RlsExecutor {
470470
let build_lib = *config.build_lib.as_ref();
471471
let is_final_crate_type = crate_type == "bin" || (crate_type == "lib" && build_lib);
472472

473-
if config.cfg_test {
474-
// FIXME(#351) allow passing --test to lib crate-type when building a dependency
475-
if is_final_crate_type {
476-
args.push("--test".to_owned());
477-
} else {
478-
args.push("--cfg".to_owned());
479-
args.push("test".to_owned());
480-
}
481-
}
482473
if config.sysroot.is_none() {
483474
args.push("--sysroot".to_owned());
484475
args.push(sysroot);

src/test/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,15 @@ fn test_bin_lib_project() {
899899
ExpectedMessage::new(Some(0)).expect_contains("capabilities"),
900900
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#"title":"Building""#),
901901
ExpectedMessage::new(None).expect_contains("progress").expect_contains("bin_lib"),
902-
ExpectedMessage::new(None).expect_contains("progress").expect_contains("bin_lib"),
902+
ExpectedMessage::new(None).expect_contains("progress"),
903+
ExpectedMessage::new(None).expect_contains("progress"),
904+
ExpectedMessage::new(None).expect_contains("progress"),
905+
ExpectedMessage::new(None).expect_contains("progress"),
903906
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#""done":true"#),
904907
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#"title":"Indexing""#),
908+
ExpectedMessage::new(None)
909+
.expect_contains(r#"bin_lib/tests/tests.rs"#)
910+
.expect_contains(r#"unused variable: `unused_var`"#),
905911
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#""done":true"#),
906912
],
907913
);
@@ -1557,7 +1563,6 @@ fn test_all_targets() {
15571563
ExpectedMessage::new(None).expect_contains("progress").expect_contains("message"),
15581564
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#""done":true"#),
15591565
ExpectedMessage::new(None).expect_contains("progress").expect_contains(r#"title":"Indexing""#),
1560-
15611566
ExpectedMessage::new(None)
15621567
.expect_contains(r#"bin_lib/tests/tests.rs"#)
15631568
.expect_contains(r#"unused variable: `unused_var`"#),

test_data/bin_lib/src/lib.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
11
pub struct LibStruct {}
2-
3-
#[cfg(test)]
4-
pub struct LibCfgTestStruct {}

test_data/bin_lib/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ extern crate bin_lib;
33
#[allow(unused_variables)]
44
fn main() {
55
let a = bin_lib::LibStruct {};
6-
let test = bin_lib::LibCfgTestStruct { };
6+
77
println!("Hello, world!");
88
}

0 commit comments

Comments
 (0)