blob: 0166bc130b13af519c6f96850f27d1e323dad7f2 [file] [log] [blame]
use crate::support::project;
const EXAMPLE: u8 = 0x1;
const BIN: u8 = 0x2;
const TEST: u8 = 0x4;
const BENCH: u8 = 0x8;
fn list_targets_test(command: &str, targets: u8) {
let full_project = project()
.file("examples/a.rs", "fn main() { }")
.file("examples/b.rs", "fn main() { }")
.file("benches/bench1.rs", "")
.file("benches/bench2.rs", "")
.file("tests/test1.rs", "")
.file("tests/test2.rs", "")
.file("src/main.rs", "fn main() { }")
.build();
if targets & EXAMPLE != 0 {
full_project
.cargo(&format!("{} --example", command))
.with_stderr(
"\
error: \"--example\" takes one argument.
Available examples:
a
b
",
)
.with_status(101)
.run();
}
if targets & BIN != 0 {
full_project
.cargo(&format!("{} --bin", command))
.with_stderr(
"\
error: \"--bin\" takes one argument.
Available binaries:
foo
",
)
.with_status(101)
.run();
}
if targets & BENCH != 0 {
full_project
.cargo(&format!("{} --bench", command))
.with_stderr(
"\
error: \"--bench\" takes one argument.
Available benches:
bench1
bench2
",
)
.with_status(101)
.run();
}
if targets & TEST != 0 {
full_project
.cargo(&format!("{} --test", command))
.with_stderr(
"\
error: \"--test\" takes one argument.
Available tests:
test1
test2
",
)
.with_status(101)
.run();
}
let empty_project = project().file("src/lib.rs", "").build();
if targets & EXAMPLE != 0 {
empty_project
.cargo(&format!("{} --example", command))
.with_stderr(
"\
error: \"--example\" takes one argument.
No examples available.
",
)
.with_status(101)
.run();
}
if targets & BIN != 0 {
empty_project
.cargo(&format!("{} --bin", command))
.with_stderr(
"\
error: \"--bin\" takes one argument.
No binaries available.
",
)
.with_status(101)
.run();
}
if targets & BENCH != 0 {
empty_project
.cargo(&format!("{} --bench", command))
.with_stderr(
"\
error: \"--bench\" takes one argument.
No benches available.
",
)
.with_status(101)
.run();
}
if targets & TEST != 0 {
empty_project
.cargo(&format!("{} --test", command))
.with_stderr(
"\
error: \"--test\" takes one argument.
No tests available.
",
)
.with_status(101)
.run();
}
}
#[test]
fn build_list_targets() {
list_targets_test("build", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn check_list_targets() {
list_targets_test("check", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn doc_list_targets() {
list_targets_test("doc", BIN);
}
#[test]
fn fix_list_targets() {
list_targets_test("fix", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn run_list_targets() {
list_targets_test("run", EXAMPLE | BIN);
}
#[test]
fn test_list_targets() {
list_targets_test("test", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn bench_list_targets() {
list_targets_test("bench", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn install_list_targets() {
list_targets_test("install", EXAMPLE | BIN);
}
#[test]
fn rustdoc_list_targets() {
list_targets_test("rustdoc", EXAMPLE | BIN | TEST | BENCH);
}
#[test]
fn rustc_list_targets() {
list_targets_test("rustc", EXAMPLE | BIN | TEST | BENCH);
}