blob: ffa8c73bf6b7d205aef5a7c1847559520789d069 [file] [log] [blame]
//! Tests for `[alias]` config command aliases.
use cargo_test_support::{basic_bin_manifest, project};
#[cargo_test]
fn alias_incorrect_config_type() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b-cargo-test = 5
"#,
)
.build();
p.cargo("b-cargo-test -v")
.with_status(101)
.with_stderr_contains(
"\
[ERROR] invalid configuration for key `alias.b-cargo-test`
expected a list, but found a integer for [..]",
)
.run();
}
#[cargo_test]
fn alias_config() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b-cargo-test = "build"
"#,
)
.build();
p.cargo("b-cargo-test -v")
.with_stderr_contains(
"\
[COMPILING] foo v0.5.0 [..]
[RUNNING] `rustc --crate-name foo [..]",
)
.run();
}
#[cargo_test]
fn recursive_alias() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", r"fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b-cargo-test = "build"
a-cargo-test = ["b-cargo-test", "-v"]
"#,
)
.build();
p.cargo("a-cargo-test")
.with_stderr_contains(
"\
[COMPILING] foo v0.5.0 [..]
[RUNNING] `rustc --crate-name foo [..]",
)
.run();
}
#[cargo_test]
fn alias_list_test() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b-cargo-test = ["build", "--release"]
"#,
)
.build();
p.cargo("b-cargo-test -v")
.with_stderr_contains("[COMPILING] foo v0.5.0 [..]")
.with_stderr_contains("[RUNNING] `rustc --crate-name [..]")
.run();
}
#[cargo_test]
fn alias_with_flags_config() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b-cargo-test = "build --release"
"#,
)
.build();
p.cargo("b-cargo-test -v")
.with_stderr_contains("[COMPILING] foo v0.5.0 [..]")
.with_stderr_contains("[RUNNING] `rustc --crate-name foo [..]")
.run();
}
#[cargo_test]
fn alias_cannot_shadow_builtin_command() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
build = "fetch"
"#,
)
.build();
p.cargo("build")
.with_stderr(
"\
[WARNING] user-defined alias `build` is ignored, because it is shadowed by a built-in command
[COMPILING] foo v0.5.0 ([..])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
",
)
.run();
}
#[cargo_test]
fn alias_override_builtin_alias() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/main.rs", "fn main() {}")
.file(
".cargo/config",
r#"
[alias]
b = "run"
"#,
)
.build();
p.cargo("b")
.with_stderr(
"\
[COMPILING] foo v0.5.0 ([..])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
[RUNNING] `target/debug/foo[EXE]`
",
)
.run();
}
#[cargo_test]
fn builtin_alias_takes_options() {
// #6381
let p = project()
.file("src/lib.rs", "")
.file(
"examples/ex1.rs",
r#"fn main() { println!("{}", std::env::args().skip(1).next().unwrap()) }"#,
)
.build();
p.cargo("r --example ex1 -- asdf").with_stdout("asdf").run();
}
#[cargo_test]
fn global_options_with_alias() {
// Check that global options are passed through.
let p = project().file("src/lib.rs", "").build();
p.cargo("-v c")
.with_stderr(
"\
[CHECKING] foo [..]
[RUNNING] `rustc [..]
[FINISHED] dev [..]
",
)
.run();
}