2019-11-25 02:42:45 +00:00
|
|
|
//! Tests for named profiles.
|
|
|
|
|
2019-09-18 05:48:22 +00:00
|
|
|
use cargo_test_support::{basic_lib_manifest, project};
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2019-09-21 06:27:14 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn inherits_on_release() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-21 06:27:14 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-21 06:27:14 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release]
|
|
|
|
inherits = "dev"
|
|
|
|
"#,
|
2019-09-21 06:27:14 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
2019-12-27 03:59:19 +00:00
|
|
|
[ERROR] `inherits` must not be specified in root profile `release`
|
2019-09-21 06:36:39 +00:00
|
|
|
",
|
2019-09-21 06:27:14 +00:00
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
2019-09-12 13:27:15 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn missing_inherits() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release-lto]
|
|
|
|
codegen-units = 7
|
|
|
|
"#,
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
2019-12-27 03:59:19 +00:00
|
|
|
[ERROR] profile `release-lto` is missing an `inherits` directive \
|
|
|
|
(`inherits` is required for all profiles except `dev` or `release`)
|
|
|
|
",
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
2019-09-21 07:27:51 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn invalid_profile_name() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-21 07:27:51 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-21 07:27:51 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.'.release-lto']
|
|
|
|
inherits = "release"
|
|
|
|
codegen-units = 7
|
|
|
|
"#,
|
2019-09-21 07:27:51 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[ERROR] failed to parse manifest at [..]
|
|
|
|
|
|
|
|
Caused by:
|
|
|
|
Invalid character `.` in profile name: `.release-lto`",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
2021-07-13 15:21:27 +00:00
|
|
|
#[ignore] // dir-name is currently disabled
|
2019-09-21 07:27:51 +00:00
|
|
|
fn invalid_dir_name() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
|
|
|
|
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[profile.'release-lto']
|
|
|
|
inherits = "release"
|
|
|
|
dir-name = ".subdir"
|
|
|
|
codegen-units = 7
|
|
|
|
"#,
|
2019-09-21 07:27:51 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[ERROR] failed to parse manifest at [..]
|
|
|
|
|
|
|
|
Caused by:
|
|
|
|
Invalid character `.` in dir-name: `.subdir`",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
2021-07-13 15:21:27 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn dir_name_disabled() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
|
|
|
cargo-features = ["named-profiles"]
|
|
|
|
|
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.1.0"
|
|
|
|
|
|
|
|
[profile.release-lto]
|
|
|
|
inherits = "release"
|
|
|
|
dir-name = "lto"
|
|
|
|
lto = true
|
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
error: failed to parse manifest at `[ROOT]/foo/Cargo.toml`
|
|
|
|
|
|
|
|
Caused by:
|
|
|
|
dir-name=\"lto\" in profile `release-lto` is not currently allowed, \
|
|
|
|
directory names are tied to the profile name for custom profiles
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
2019-09-21 07:27:51 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn invalid_inherits() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-21 07:27:51 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-21 07:27:51 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.'release-lto']
|
|
|
|
inherits = ".release"
|
|
|
|
codegen-units = 7
|
|
|
|
"#,
|
2019-09-21 07:27:51 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[ERROR] failed to parse manifest at [..]
|
|
|
|
|
|
|
|
Caused by:
|
|
|
|
Invalid character `.` in inherits: `.release`",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
2019-09-12 13:27:15 +00:00
|
|
|
#[cargo_test]
|
|
|
|
fn non_existent_inherits() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release-lto]
|
|
|
|
codegen-units = 7
|
|
|
|
inherits = "non-existent"
|
|
|
|
"#,
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
2019-12-27 03:59:19 +00:00
|
|
|
[ERROR] profile `release-lto` inherits from `non-existent`, but that profile is not defined
|
|
|
|
",
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn self_inherits() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release-lto]
|
|
|
|
codegen-units = 7
|
|
|
|
inherits = "release-lto"
|
|
|
|
"#,
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
2019-12-27 03:59:19 +00:00
|
|
|
[ERROR] profile inheritance loop detected with profile `release-lto` inheriting `release-lto`
|
|
|
|
",
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn inherits_loop() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release-lto]
|
|
|
|
codegen-units = 7
|
|
|
|
inherits = "release-lto2"
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.release-lto2]
|
|
|
|
codegen-units = 7
|
|
|
|
inherits = "release-lto"
|
|
|
|
"#,
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
2019-12-27 03:59:19 +00:00
|
|
|
[ERROR] profile inheritance loop detected with profile `release-lto2` inheriting `release-lto`
|
|
|
|
",
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn overrides_with_custom() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[dependencies]
|
|
|
|
xxx = {path = "xxx"}
|
|
|
|
yyy = {path = "yyy"}
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.dev]
|
|
|
|
codegen-units = 7
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.dev.package.xxx]
|
|
|
|
codegen-units = 5
|
|
|
|
[profile.dev.package.yyy]
|
|
|
|
codegen-units = 3
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.other]
|
|
|
|
inherits = "dev"
|
|
|
|
codegen-units = 2
|
2019-09-12 13:27:15 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.other.package.yyy]
|
|
|
|
codegen-units = 6
|
|
|
|
"#,
|
2019-09-12 13:27:15 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.file("xxx/Cargo.toml", &basic_lib_manifest("xxx"))
|
|
|
|
.file("xxx/src/lib.rs", "")
|
|
|
|
.file("yyy/Cargo.toml", &basic_lib_manifest("yyy"))
|
|
|
|
.file("yyy/src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
// profile overrides are inherited between profiles using inherits and have a
|
|
|
|
// higher priority than profile options provided by custom profiles
|
|
|
|
p.cargo("build -v")
|
|
|
|
.masquerade_as_nightly_cargo()
|
2019-09-12 14:13:40 +00:00
|
|
|
.with_stderr_unordered(
|
|
|
|
"\
|
2019-09-12 13:27:15 +00:00
|
|
|
[COMPILING] xxx [..]
|
|
|
|
[COMPILING] yyy [..]
|
|
|
|
[COMPILING] foo [..]
|
|
|
|
[RUNNING] `rustc --crate-name xxx [..] -C codegen-units=5 [..]`
|
|
|
|
[RUNNING] `rustc --crate-name yyy [..] -C codegen-units=3 [..]`
|
|
|
|
[RUNNING] `rustc --crate-name foo [..] -C codegen-units=7 [..]`
|
|
|
|
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// This also verifies that the custom profile names appears in the finished line.
|
|
|
|
p.cargo("build --profile=other -Z unstable-options -v")
|
|
|
|
.masquerade_as_nightly_cargo()
|
2019-09-12 14:13:40 +00:00
|
|
|
.with_stderr_unordered(
|
|
|
|
"\
|
2019-09-12 13:27:15 +00:00
|
|
|
[COMPILING] xxx [..]
|
|
|
|
[COMPILING] yyy [..]
|
|
|
|
[COMPILING] foo [..]
|
|
|
|
[RUNNING] `rustc --crate-name xxx [..] -C codegen-units=5 [..]`
|
|
|
|
[RUNNING] `rustc --crate-name yyy [..] -C codegen-units=6 [..]`
|
|
|
|
[RUNNING] `rustc --crate-name foo [..] -C codegen-units=2 [..]`
|
|
|
|
[FINISHED] other [unoptimized + debuginfo] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
2019-09-12 17:25:12 +00:00
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn conflicting_usage() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
"#,
|
2019-09-12 17:25:12 +00:00
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build -Z unstable-options --profile=dev --release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr_unordered("error: Conflicting usage of --profile and --release")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
p.cargo("install -Z unstable-options --profile=release --debug")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_status(101)
|
|
|
|
.with_stderr_unordered("error: Conflicting usage of --profile and --debug")
|
|
|
|
.run();
|
|
|
|
}
|
2019-09-12 17:40:03 +00:00
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn clean_custom_dirname() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2020-09-27 00:59:58 +00:00
|
|
|
cargo-features = ["named-profiles"]
|
2019-09-12 17:40:03 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
2019-09-12 17:40:03 +00:00
|
|
|
|
2020-09-27 00:59:58 +00:00
|
|
|
[profile.other]
|
|
|
|
inherits = "release"
|
|
|
|
"#,
|
2019-09-12 17:40:03 +00:00
|
|
|
)
|
|
|
|
.file("src/main.rs", "fn main() {}")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build --release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
2019-09-21 06:32:07 +00:00
|
|
|
.with_stdout("")
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[COMPILING] foo v0.0.1 ([..])
|
|
|
|
[FINISHED] release [optimized] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
2019-09-12 17:40:03 +00:00
|
|
|
.run();
|
|
|
|
|
|
|
|
p.cargo("clean -p foo").masquerade_as_nightly_cargo().run();
|
|
|
|
|
|
|
|
p.cargo("build --release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stdout("")
|
2019-09-21 06:32:07 +00:00
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[FINISHED] release [optimized] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
2019-09-12 17:40:03 +00:00
|
|
|
.run();
|
|
|
|
|
|
|
|
p.cargo("clean -p foo --release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.run();
|
|
|
|
|
|
|
|
p.cargo("build --release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[COMPILING] foo v0.0.1 ([..])
|
|
|
|
[FINISHED] release [optimized] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
|
2019-09-21 06:32:07 +00:00
|
|
|
p.cargo("build")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stdout("")
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[COMPILING] foo v0.0.1 ([..])
|
|
|
|
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
2019-09-12 17:40:03 +00:00
|
|
|
|
|
|
|
p.cargo("build -Z unstable-options --profile=other")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
[COMPILING] foo v0.0.1 ([..])
|
|
|
|
[FINISHED] other [optimized] target(s) in [..]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
|
|
|
|
p.cargo("clean")
|
|
|
|
.arg("--release")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// Make sure that 'other' was not cleaned
|
|
|
|
assert!(p.build_dir().is_dir());
|
|
|
|
assert!(p.build_dir().join("debug").is_dir());
|
|
|
|
assert!(p.build_dir().join("other").is_dir());
|
|
|
|
assert!(!p.build_dir().join("release").is_dir());
|
|
|
|
|
|
|
|
// This should clean 'other'
|
|
|
|
p.cargo("clean -Z unstable-options --profile=other")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
assert!(p.build_dir().join("debug").is_dir());
|
|
|
|
assert!(!p.build_dir().join("other").is_dir());
|
|
|
|
}
|
2019-12-27 03:59:19 +00:00
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn unknown_profile() {
|
|
|
|
let p = project()
|
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
|
|
|
cargo-features = ["named-profiles"]
|
|
|
|
|
|
|
|
[package]
|
|
|
|
name = "foo"
|
|
|
|
version = "0.0.1"
|
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
|
|
|
|
|
|
|
p.cargo("build --profile alpha -Zunstable-options")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stderr("[ERROR] profile `alpha` is not defined")
|
|
|
|
.with_status(101)
|
|
|
|
.run();
|
|
|
|
// Clean has a separate code path, need to check it too.
|
|
|
|
p.cargo("clean --profile alpha -Zunstable-options")
|
|
|
|
.masquerade_as_nightly_cargo()
|
|
|
|
.with_stderr("[ERROR] profile `alpha` is not defined")
|
|
|
|
.with_status(101)
|
|
|
|
.run();
|
|
|
|
}
|