cargo/tests/testsuite/multitarget.rs
Matthias Krüger 1b7fa21f39 fix clippy warnings
fixes these clippy warnings:

map_collect_result_unit
needless_borrow
needless_return
into_iter_on_ref
manual_flatten
match_like_matches_macro
bool_comparison
2021-04-02 12:30:36 +02:00

145 lines
3.6 KiB
Rust

//! Tests for multiple `--target` flags to subcommands
use cargo_test_support::{basic_manifest, cross_compile, project, rustc_host};
#[cargo_test]
fn double_target_rejected() {
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("build --target a --target b")
.with_stderr("error: specifying multiple `--target` flags requires `-Zmultitarget`")
.with_status(101)
.run();
}
#[cargo_test]
fn simple_build() {
if cross_compile::disabled() {
return;
}
let t1 = cross_compile::alternate();
let t2 = rustc_host();
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("build -Z multitarget")
.arg("--target")
.arg(&t1)
.arg("--target")
.arg(&t2)
.masquerade_as_nightly_cargo()
.run();
assert!(p.target_bin(t1, "foo").is_file());
assert!(p.target_bin(t2, "foo").is_file());
}
#[cargo_test]
fn simple_test() {
if !cross_compile::can_run_on_host() {
return;
}
let t1 = cross_compile::alternate();
let t2 = rustc_host();
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/lib.rs", "fn main() {}")
.build();
p.cargo("test -Z multitarget")
.arg("--target")
.arg(&t1)
.arg("--target")
.arg(&t2)
.masquerade_as_nightly_cargo()
.with_stderr_contains(&format!("[RUNNING] [..]{}[..]", t1))
.with_stderr_contains(&format!("[RUNNING] [..]{}[..]", t2))
.run();
}
#[cargo_test]
fn simple_run() {
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("run -Z multitarget --target a --target b")
.with_stderr("error: only one `--target` argument is supported")
.with_status(101)
.masquerade_as_nightly_cargo()
.run();
}
#[cargo_test]
fn simple_doc() {
if cross_compile::disabled() {
return;
}
let t1 = cross_compile::alternate();
let t2 = rustc_host();
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/lib.rs", "//! empty lib")
.build();
p.cargo("doc -Z multitarget")
.arg("--target")
.arg(&t1)
.arg("--target")
.arg(&t2)
.masquerade_as_nightly_cargo()
.run();
assert!(p.build_dir().join(&t1).join("doc/foo/index.html").is_file());
assert!(p.build_dir().join(&t2).join("doc/foo/index.html").is_file());
}
#[cargo_test]
fn simple_check() {
if cross_compile::disabled() {
return;
}
let t1 = cross_compile::alternate();
let t2 = rustc_host();
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("check -Z multitarget")
.arg("--target")
.arg(&t1)
.arg("--target")
.arg(&t2)
.masquerade_as_nightly_cargo()
.run();
}
#[cargo_test]
fn same_value_twice() {
if cross_compile::disabled() {
return;
}
let t = rustc_host();
let p = project()
.file("Cargo.toml", &basic_manifest("foo", "1.0.0"))
.file("src/main.rs", "fn main() {}")
.build();
p.cargo("build -Z multitarget")
.arg("--target")
.arg(&t)
.arg("--target")
.arg(&t)
.masquerade_as_nightly_cargo()
.run();
assert!(p.target_bin(t, "foo").is_file());
}