2021-03-25 19:56:24 +00:00
|
|
|
//! Tests for the `cargo config` command.
|
|
|
|
|
|
|
|
use super::config::write_config_at;
|
|
|
|
use cargo_test_support::paths;
|
|
|
|
use std::fs;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
fn cargo_process(s: &str) -> cargo_test_support::Execs {
|
|
|
|
let mut p = cargo_test_support::cargo_process(s);
|
|
|
|
// Clear out some of the environment added by the default cargo_process so
|
|
|
|
// the tests don't need to deal with it.
|
|
|
|
p.env_remove("CARGO_PROFILE_DEV_SPLIT_DEBUGINFO")
|
|
|
|
.env_remove("CARGO_PROFILE_TEST_SPLIT_DEBUGINFO")
|
|
|
|
.env_remove("CARGO_PROFILE_RELEASE_SPLIT_DEBUGINFO")
|
|
|
|
.env_remove("CARGO_PROFILE_BENCH_SPLIT_DEBUGINFO")
|
|
|
|
.env_remove("CARGO_INCREMENTAL");
|
|
|
|
p
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn gated() {
|
|
|
|
cargo_process("config get")
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stderr("\
|
|
|
|
error: the `cargo config` command is unstable, pass `-Z unstable-options` to enable it
|
|
|
|
See https://github.com/rust-lang/cargo/issues/9301 for more information about the `cargo config` command.
|
|
|
|
")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
fn common_setup() -> PathBuf {
|
|
|
|
write_config_at(
|
|
|
|
paths::home().join(".cargo/config.toml"),
|
|
|
|
"
|
|
|
|
[alias]
|
|
|
|
foo = \"abc --xyz\"
|
|
|
|
[build]
|
|
|
|
jobs = 99
|
|
|
|
rustflags = [\"--flag-global\"]
|
|
|
|
[profile.dev]
|
|
|
|
opt-level = 3
|
|
|
|
[profile.dev.package.foo]
|
|
|
|
opt-level = 1
|
|
|
|
[target.'cfg(target_os = \"linux\")']
|
|
|
|
runner = \"runme\"
|
|
|
|
|
|
|
|
# How unknown keys are handled.
|
|
|
|
[extra-table]
|
|
|
|
somekey = \"somevalue\"
|
|
|
|
",
|
|
|
|
);
|
|
|
|
let sub_folder = paths::root().join("foo/.cargo");
|
|
|
|
write_config_at(
|
|
|
|
sub_folder.join("config.toml"),
|
|
|
|
"
|
|
|
|
[alias]
|
|
|
|
sub-example = [\"sub\", \"example\"]
|
|
|
|
[build]
|
|
|
|
rustflags = [\"--flag-directory\"]
|
|
|
|
",
|
|
|
|
);
|
|
|
|
sub_folder
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn get_toml() {
|
|
|
|
// Notes:
|
|
|
|
// - The "extra-table" is shown without a warning. I'm not sure how that
|
|
|
|
// should be handled, since displaying warnings could cause problems
|
|
|
|
// with ingesting the output.
|
|
|
|
// - Environment variables aren't loaded. :(
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_ALIAS_BAR", "cat dog")
|
|
|
|
.env("CARGO_BUILD_JOBS", "100")
|
|
|
|
// The weird forward slash in the linux line is due to testsuite normalization.
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
alias.foo = \"abc --xyz\"
|
|
|
|
alias.sub-example = [\"sub\", \"example\"]
|
|
|
|
build.jobs = 99
|
|
|
|
build.rustflags = [\"--flag-directory\", \"--flag-global\"]
|
|
|
|
extra-table.somekey = \"somevalue\"
|
|
|
|
profile.dev.opt-level = 3
|
|
|
|
profile.dev.package.foo.opt-level = 1
|
2021-06-16 17:28:43 +00:00
|
|
|
target.\"cfg(target_os = \\\"linux\\\")\".runner = \"runme\"
|
2021-03-25 19:56:24 +00:00
|
|
|
# The following environment variables may affect the loaded values.
|
|
|
|
# CARGO_ALIAS_BAR=[..]cat dog[..]
|
|
|
|
# CARGO_BUILD_JOBS=100
|
|
|
|
# CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// Env keys work if they are specific.
|
|
|
|
cargo_process("config get build.jobs -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_JOBS", "100")
|
|
|
|
.with_stdout("build.jobs = 100")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// Array value.
|
|
|
|
cargo_process("config get build.rustflags -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout("build.rustflags = [\"--flag-directory\", \"--flag-global\"]")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// Sub-table
|
|
|
|
cargo_process("config get profile -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
profile.dev.opt-level = 3
|
|
|
|
profile.dev.package.foo.opt-level = 1
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// Specific profile entry.
|
|
|
|
cargo_process("config get profile.dev.opt-level -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout("profile.dev.opt-level = 3")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// A key that isn't set.
|
|
|
|
cargo_process("config get build.rustc -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stdout("")
|
|
|
|
.with_stderr("error: config value `build.rustc` is not set")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
// A key that is not part of Cargo's config schema.
|
|
|
|
cargo_process("config get not.set -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stdout("")
|
|
|
|
.with_stderr("error: config value `not.set` is not set")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn get_json() {
|
|
|
|
// Notes:
|
|
|
|
// - This does not show env vars at all. :(
|
|
|
|
let all_json = r#"
|
|
|
|
{
|
|
|
|
"alias": {
|
|
|
|
"foo": "abc --xyz",
|
|
|
|
"sub-example": [
|
|
|
|
"sub",
|
|
|
|
"example"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"build": {
|
|
|
|
"jobs": 99,
|
|
|
|
"rustflags": [
|
|
|
|
"--flag-directory",
|
|
|
|
"--flag-global"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"extra-table": {
|
|
|
|
"somekey": "somevalue"
|
|
|
|
},
|
|
|
|
"profile": {
|
|
|
|
"dev": {
|
|
|
|
"opt-level": 3,
|
|
|
|
"package": {
|
|
|
|
"foo": {
|
|
|
|
"opt-level": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"target": {
|
|
|
|
"cfg(target_os = \"linux\")": {
|
|
|
|
"runner": "runme"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --format=json -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_ALIAS_BAR", "cat dog")
|
|
|
|
.env("CARGO_BUILD_JOBS", "100")
|
|
|
|
.with_json(all_json)
|
2021-03-29 21:00:31 +00:00
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
note: The following environment variables may affect the loaded values.
|
|
|
|
CARGO_ALIAS_BAR=[..]cat dog[..]
|
|
|
|
CARGO_BUILD_JOBS=100
|
|
|
|
CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
",
|
|
|
|
)
|
2021-03-25 19:56:24 +00:00
|
|
|
.run();
|
|
|
|
|
|
|
|
// json-value is the same for the entire root table
|
|
|
|
cargo_process("config get --format=json-value -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_json(all_json)
|
2021-03-29 21:00:31 +00:00
|
|
|
.with_stderr(
|
|
|
|
"\
|
|
|
|
note: The following environment variables may affect the loaded values.
|
|
|
|
CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
",
|
|
|
|
)
|
2021-03-25 19:56:24 +00:00
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --format=json build.jobs -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_json(
|
|
|
|
r#"
|
|
|
|
{"build": {"jobs": 99}}
|
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --format=json-value build.jobs -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout("99")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn show_origin_toml() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --show-origin -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
alias.foo = \"abc --xyz\" # [ROOT]/home/.cargo/config.toml
|
|
|
|
alias.sub-example = [
|
|
|
|
\"sub\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
\"example\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
]
|
|
|
|
build.jobs = 99 # [ROOT]/home/.cargo/config.toml
|
|
|
|
build.rustflags = [
|
|
|
|
\"--flag-directory\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
\"--flag-global\", # [ROOT]/home/.cargo/config.toml
|
|
|
|
]
|
|
|
|
extra-table.somekey = \"somevalue\" # [ROOT]/home/.cargo/config.toml
|
|
|
|
profile.dev.opt-level = 3 # [ROOT]/home/.cargo/config.toml
|
|
|
|
profile.dev.package.foo.opt-level = 1 # [ROOT]/home/.cargo/config.toml
|
2021-06-16 17:28:43 +00:00
|
|
|
target.\"cfg(target_os = \\\"linux\\\")\".runner = \"runme\" # [ROOT]/home/.cargo/config.toml
|
2021-03-25 19:56:24 +00:00
|
|
|
# The following environment variables may affect the loaded values.
|
|
|
|
# CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --show-origin build.rustflags -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_RUSTFLAGS", "env1 env2")
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
build.rustflags = [
|
|
|
|
\"--flag-directory\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
\"--flag-global\", # [ROOT]/home/.cargo/config.toml
|
|
|
|
\"env1\", # environment variable `CARGO_BUILD_RUSTFLAGS`
|
|
|
|
\"env2\", # environment variable `CARGO_BUILD_RUSTFLAGS`
|
|
|
|
]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn show_origin_toml_cli() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --show-origin build.jobs -Zunstable-options --config build.jobs=123")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_JOBS", "1")
|
|
|
|
.with_stdout("build.jobs = 123 # --config cli option")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --show-origin build.rustflags -Zunstable-options --config")
|
|
|
|
.arg("build.rustflags=[\"cli1\",\"cli2\"]")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_RUSTFLAGS", "env1 env2")
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
build.rustflags = [
|
|
|
|
\"--flag-directory\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
\"--flag-global\", # [ROOT]/home/.cargo/config.toml
|
|
|
|
\"cli1\", # --config cli option
|
|
|
|
\"cli2\", # --config cli option
|
|
|
|
\"env1\", # environment variable `CARGO_BUILD_RUSTFLAGS`
|
|
|
|
\"env2\", # environment variable `CARGO_BUILD_RUSTFLAGS`
|
|
|
|
]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn show_origin_json() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --show-origin --format=json -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stderr("error: the `json` format does not support --show-origin, try the `toml` format instead")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn unmerged_toml() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --merged=no -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_ALIAS_BAR", "cat dog")
|
|
|
|
.env("CARGO_BUILD_JOBS", "100")
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
# Environment variables
|
|
|
|
# CARGO=[..]
|
|
|
|
# CARGO_ALIAS_BAR=[..]cat dog[..]
|
|
|
|
# CARGO_BUILD_JOBS=100
|
|
|
|
# CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
|
|
|
|
# [ROOT]/foo/.cargo/config.toml
|
|
|
|
alias.sub-example = [\"sub\", \"example\"]
|
|
|
|
build.rustflags = [\"--flag-directory\"]
|
|
|
|
|
|
|
|
# [ROOT]/home/.cargo/config.toml
|
|
|
|
alias.foo = \"abc --xyz\"
|
|
|
|
build.jobs = 99
|
|
|
|
build.rustflags = [\"--flag-global\"]
|
|
|
|
extra-table.somekey = \"somevalue\"
|
|
|
|
profile.dev.opt-level = 3
|
|
|
|
profile.dev.package.foo.opt-level = 1
|
2021-06-16 17:28:43 +00:00
|
|
|
target.\"cfg(target_os = \\\"linux\\\")\".runner = \"runme\"
|
2021-03-25 19:56:24 +00:00
|
|
|
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --merged=no build.rustflags -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_RUSTFLAGS", "env1 env2")
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
# Environment variables
|
|
|
|
# CARGO_BUILD_RUSTFLAGS=[..]env1 env2[..]
|
|
|
|
|
|
|
|
# [ROOT]/foo/.cargo/config.toml
|
|
|
|
build.rustflags = [\"--flag-directory\"]
|
|
|
|
|
|
|
|
# [ROOT]/home/.cargo/config.toml
|
|
|
|
build.rustflags = [\"--flag-global\"]
|
|
|
|
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --merged=no does.not.exist -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stderr("")
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
cargo_process("config get --merged=no build.rustflags.extra -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"error: expected table for configuration key `build.rustflags`, \
|
|
|
|
but found array in [ROOT]/foo/.cargo/config.toml",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn unmerged_toml_cli() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --merged=no build.rustflags -Zunstable-options --config")
|
|
|
|
.arg("build.rustflags=[\"cli1\",\"cli2\"]")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.env("CARGO_BUILD_RUSTFLAGS", "env1 env2")
|
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
# --config cli option
|
|
|
|
build.rustflags = [\"cli1\", \"cli2\"]
|
|
|
|
|
|
|
|
# Environment variables
|
|
|
|
# CARGO_BUILD_RUSTFLAGS=[..]env1 env2[..]
|
|
|
|
|
|
|
|
# [ROOT]/foo/.cargo/config.toml
|
|
|
|
build.rustflags = [\"--flag-directory\"]
|
|
|
|
|
|
|
|
# [ROOT]/home/.cargo/config.toml
|
|
|
|
build.rustflags = [\"--flag-global\"]
|
|
|
|
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn unmerged_json() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
cargo_process("config get --merged=no --format=json -Zunstable-options")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_status(101)
|
|
|
|
.with_stderr(
|
|
|
|
"error: the `json` format does not support --merged=no, try the `toml` format instead",
|
|
|
|
)
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cargo_test]
|
|
|
|
fn includes() {
|
|
|
|
let sub_folder = common_setup();
|
|
|
|
fs::write(
|
|
|
|
sub_folder.join("config.toml"),
|
|
|
|
"
|
|
|
|
include = 'other.toml'
|
|
|
|
[build]
|
|
|
|
rustflags = [\"--flag-directory\"]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
fs::write(
|
|
|
|
sub_folder.join("other.toml"),
|
|
|
|
"
|
|
|
|
[build]
|
|
|
|
rustflags = [\"--flag-other\"]
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
cargo_process("config get build.rustflags -Zunstable-options -Zconfig-include")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config", "config-include"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout(r#"build.rustflags = ["--flag-other", "--flag-directory", "--flag-global"]"#)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
|
2022-01-04 17:04:50 +00:00
|
|
|
cargo_process("config get build.rustflags --show-origin -Zunstable-options -Zconfig-include")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config", "config-include"])
|
2022-01-04 17:04:50 +00:00
|
|
|
.with_stdout(
|
|
|
|
"\
|
2021-03-25 19:56:24 +00:00
|
|
|
build.rustflags = [
|
|
|
|
\"--flag-other\", # [ROOT]/foo/.cargo/other.toml
|
|
|
|
\"--flag-directory\", # [ROOT]/foo/.cargo/config.toml
|
|
|
|
\"--flag-global\", # [ROOT]/home/.cargo/config.toml
|
|
|
|
]
|
|
|
|
",
|
2022-01-04 17:04:50 +00:00
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
2021-03-25 19:56:24 +00:00
|
|
|
|
|
|
|
cargo_process("config get --merged=no -Zunstable-options -Zconfig-include")
|
|
|
|
.cwd(&sub_folder.parent().unwrap())
|
2022-07-16 02:32:23 +00:00
|
|
|
.masquerade_as_nightly_cargo(&["cargo-config", "config-include"])
|
2021-03-25 19:56:24 +00:00
|
|
|
.with_stdout(
|
|
|
|
"\
|
|
|
|
# Environment variables
|
|
|
|
# CARGO=[..]
|
|
|
|
# CARGO_HOME=[ROOT]/home/.cargo
|
|
|
|
|
|
|
|
# [ROOT]/foo/.cargo/other.toml
|
|
|
|
build.rustflags = [\"--flag-other\"]
|
|
|
|
|
|
|
|
# [ROOT]/foo/.cargo/config.toml
|
|
|
|
build.rustflags = [\"--flag-directory\"]
|
|
|
|
include = \"other.toml\"
|
|
|
|
|
|
|
|
# [ROOT]/home/.cargo/config.toml
|
|
|
|
alias.foo = \"abc --xyz\"
|
|
|
|
build.jobs = 99
|
|
|
|
build.rustflags = [\"--flag-global\"]
|
|
|
|
extra-table.somekey = \"somevalue\"
|
|
|
|
profile.dev.opt-level = 3
|
|
|
|
profile.dev.package.foo.opt-level = 1
|
2021-06-16 17:28:43 +00:00
|
|
|
target.\"cfg(target_os = \\\"linux\\\")\".runner = \"runme\"
|
2021-03-25 19:56:24 +00:00
|
|
|
|
|
|
|
",
|
|
|
|
)
|
|
|
|
.with_stderr("")
|
|
|
|
.run();
|
|
|
|
}
|