mirror of
https://github.com/rust-lang/cargo
synced 2024-10-02 14:04:23 +00:00
Rework handling of --tests and --benches with implied targets.
This commit is contained in:
parent
0acc67ca47
commit
3dd21d80ba
|
@ -111,8 +111,7 @@ pub fn execute(options: Options, config: &mut Config) -> CliResult {
|
|||
&options.flag_exclude,
|
||||
&options.flag_package)?;
|
||||
|
||||
let test = options.flag_tests ||
|
||||
match options.flag_profile.as_ref().map(|t| &t[..]) {
|
||||
let test = match options.flag_profile.as_ref().map(|t| &t[..]) {
|
||||
Some("test") => true,
|
||||
None => false,
|
||||
Some(profile) => {
|
||||
|
@ -132,8 +131,8 @@ pub fn execute(options: Options, config: &mut Config) -> CliResult {
|
|||
spec: spec,
|
||||
mode: ops::CompileMode::Check{test:test},
|
||||
release: options.flag_release,
|
||||
filter: ops::CompileFilter::new(options.flag_lib || options.flag_tests,
|
||||
&options.flag_bin, options.flag_bins || options.flag_tests,
|
||||
filter: ops::CompileFilter::new(options.flag_lib,
|
||||
&options.flag_bin, options.flag_bins,
|
||||
&options.flag_test, options.flag_tests,
|
||||
&options.flag_example, options.flag_examples,
|
||||
&options.flag_bench, options.flag_benches,
|
||||
|
|
|
@ -652,10 +652,22 @@ fn generate_targets<'a>(pkg: &'a Package,
|
|||
pkg, bins, "bin", Target::is_bin, profile)?);
|
||||
targets.append(&mut propose_indicated_targets(
|
||||
pkg, examples, "example", Target::is_example, profile)?);
|
||||
// If --benches was specified, add all targets that would be
|
||||
// generated by `cargo bench`.
|
||||
let bench_filter = match benches {
|
||||
FilterRule::All => Target::benched,
|
||||
FilterRule::Just(_) => Target::is_bench
|
||||
};
|
||||
targets.append(&mut propose_indicated_targets(
|
||||
pkg, tests, "test", Target::is_test, test_profile)?);
|
||||
pkg, benches, "bench", bench_filter, bench_profile)?);
|
||||
// If --tests was specified, add all targets that would be
|
||||
// generated by `cargo test`.
|
||||
let test_filter = match tests {
|
||||
FilterRule::All => Target::tested,
|
||||
FilterRule::Just(_) => Target::is_test
|
||||
};
|
||||
targets.append(&mut propose_indicated_targets(
|
||||
pkg, benches, "bench", Target::is_bench, bench_profile)?);
|
||||
pkg, tests, "test", test_filter, test_profile)?);
|
||||
targets
|
||||
}
|
||||
};
|
||||
|
|
|
@ -862,7 +862,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
|
|||
ret.extend(self.maybe_lib(unit));
|
||||
|
||||
// Integration tests/benchmarks require binaries to be built
|
||||
if unit.profile.test && !unit.profile.check &&
|
||||
if unit.profile.test &&
|
||||
(unit.target.is_test() || unit.target.is_bench()) {
|
||||
ret.extend(unit.pkg.targets().iter().filter(|t| {
|
||||
let no_required_features = Vec::new();
|
||||
|
@ -876,7 +876,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
|
|||
Unit {
|
||||
pkg: unit.pkg,
|
||||
target: t,
|
||||
profile: self.lib_profile(),
|
||||
profile: self.lib_or_check_profile(unit, t),
|
||||
kind: unit.kind.for_target(t),
|
||||
}
|
||||
}));
|
||||
|
|
|
@ -488,9 +488,9 @@ fn check_unit_test_profile() {
|
|||
.with_stderr_contains("[..]badtext[..]"));
|
||||
}
|
||||
|
||||
// Verify what is checked with various command-line filters.
|
||||
#[test]
|
||||
fn check_unit_test_all_tests() {
|
||||
// Lib unit.
|
||||
fn check_filters() {
|
||||
let p = project("foo")
|
||||
.file("Cargo.toml", SIMPLE_MANIFEST)
|
||||
.file("src/lib.rs", r#"
|
||||
|
@ -533,36 +533,54 @@ fn check_unit_test_all_tests() {
|
|||
.build();
|
||||
|
||||
assert_that(p.cargo("check"),
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_does_not_contain("unused_noraml_t1")
|
||||
.with_stderr_does_not_contain("unused_noraml_ex1")
|
||||
.with_stderr_does_not_contain("unused_noraml_b1")
|
||||
.with_stderr_does_not_contain("unused_unit_"));
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_does_not_contain("unused_normal_t1")
|
||||
.with_stderr_does_not_contain("unused_normal_ex1")
|
||||
.with_stderr_does_not_contain("unused_normal_b1")
|
||||
.with_stderr_does_not_contain("unused_unit_"));
|
||||
p.root().join("target").rm_rf();
|
||||
assert_that(p.cargo("check").arg("--tests").arg("-v"),
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_unit_lib[..]")
|
||||
.with_stderr_contains("[..]unused_unit_bin[..]")
|
||||
.with_stderr_contains("[..]unused_unit_t1[..]")
|
||||
.with_stderr_does_not_contain("unused_normal_ex1")
|
||||
.with_stderr_does_not_contain("unused_normal_b1")
|
||||
.with_stderr_does_not_contain("unused_unit_ex1")
|
||||
.with_stderr_does_not_contain("unused_unit_b1"));
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..] --crate-name foo src[/]lib.rs [..] --test [..]")
|
||||
.with_stderr_contains("[..] --crate-name foo src[/]lib.rs --crate-type lib [..]")
|
||||
.with_stderr_contains("[..] --crate-name foo src[/]main.rs [..] --test [..]")
|
||||
.with_stderr_contains("[..] --crate-name foo src[/]main.rs --crate-type bin [..]")
|
||||
.with_stderr_contains("[..]unused_unit_lib[..]")
|
||||
.with_stderr_contains("[..]unused_unit_bin[..]")
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_contains("[..]unused_unit_t1[..]")
|
||||
.with_stderr_contains("[..]unused_normal_ex1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_ex1[..]")
|
||||
.with_stderr_does_not_contain("unused_normal_b1")
|
||||
.with_stderr_does_not_contain("unused_unit_b1"));
|
||||
p.root().join("target").rm_rf();
|
||||
assert_that(p.cargo("check").arg("--test").arg("t1").arg("-v"),
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_contains("[..]unused_unit_t1[..]")
|
||||
.with_stderr_does_not_contain("unused_unit_lib")
|
||||
.with_stderr_does_not_contain("unused_unit_bin")
|
||||
.with_stderr_does_not_contain("unused_normal_ex1")
|
||||
.with_stderr_does_not_contain("unused_normal_b1")
|
||||
.with_stderr_does_not_contain("unused_unit_ex1")
|
||||
.with_stderr_does_not_contain("unused_unit_b1"));
|
||||
p.root().join("target").rm_rf();
|
||||
assert_that(p.cargo("check").arg("--all-targets").arg("-v"),
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_contains("[..]unused_normal_t1[..]")
|
||||
.with_stderr_contains("[..]unused_normal_ex1[..]")
|
||||
.with_stderr_contains("[..]unused_normal_b1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_b1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_t1[..]")
|
||||
.with_stderr_does_not_contain("unused_unit_lib")
|
||||
.with_stderr_does_not_contain("unused_unit_bin")
|
||||
.with_stderr_does_not_contain("unused_unit_ex1"));
|
||||
execs().with_status(0)
|
||||
.with_stderr_contains("[..]unused_normal_lib[..]")
|
||||
.with_stderr_contains("[..]unused_normal_bin[..]")
|
||||
.with_stderr_contains("[..]unused_normal_t1[..]")
|
||||
.with_stderr_contains("[..]unused_normal_ex1[..]")
|
||||
.with_stderr_contains("[..]unused_normal_b1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_b1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_t1[..]")
|
||||
.with_stderr_contains("[..]unused_unit_lib[..]")
|
||||
.with_stderr_contains("[..]unused_unit_bin[..]")
|
||||
.with_stderr_contains("[..]unused_unit_ex1[..]"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -1203,7 +1203,9 @@ fn test_run_implicit_test_target() {
|
|||
.with_stderr(format!("\
|
||||
[COMPILING] foo v0.0.1 ({dir})
|
||||
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
|
||||
[RUNNING] target[/]debug[/]deps[/]mytest-[..][EXE]", dir = prj.url()))
|
||||
[RUNNING] target[/]debug[/]deps[/]mybin-[..][EXE]
|
||||
[RUNNING] target[/]debug[/]deps[/]mytest-[..][EXE]
|
||||
[RUNNING] target[/]debug[/]examples[/]myexm-[..][EXE]", dir = prj.url()))
|
||||
.with_stdout_contains("test test_in_test ... ok"));
|
||||
}
|
||||
|
||||
|
@ -1233,6 +1235,7 @@ fn test_run_implicit_bench_target() {
|
|||
.with_stderr(format!("\
|
||||
[COMPILING] foo v0.0.1 ({dir})
|
||||
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
|
||||
[RUNNING] target[/]debug[/]deps[/]mybin-[..][EXE]
|
||||
[RUNNING] target[/]debug[/]deps[/]mybench-[..][EXE]", dir = prj.url()))
|
||||
.with_stdout_contains("test test_in_bench ... ok"));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue