mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
101 lines
3.1 KiB
Rust
101 lines
3.1 KiB
Rust
use crate::prelude::*;
|
|
use cargo_test_support::file;
|
|
use cargo_test_support::project;
|
|
use cargo_test_support::registry::Package;
|
|
|
|
#[cargo_test]
|
|
fn case() {
|
|
Package::new("normal_a", "1.0.0")
|
|
.dep("normal_b", "1.0")
|
|
.publish();
|
|
Package::new("normal_b", "1.0.0")
|
|
.dep("normal_c", "1.0")
|
|
.build_dep("normal_b_build_a", "1.0.0")
|
|
.dev_dep("normal_b_dev_a", "1.0.0")
|
|
.publish();
|
|
Package::new("normal_c", "1.0.0").publish();
|
|
Package::new("normal_b_build_a", "1.0.0")
|
|
.dep("normal_b_build_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("normal_b_build_a_normal_a", "1.0.0").publish();
|
|
Package::new("normal_b_dev_a", "1.0.0")
|
|
.dep("normal_b_dev_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("normal_b_dev_a_normal_a", "1.0.0").publish();
|
|
Package::new("normal_d", "1.0.0").publish();
|
|
|
|
Package::new("build_a", "1.0.0")
|
|
.dep("build_b", "1.0")
|
|
.publish();
|
|
Package::new("build_b", "1.0.0")
|
|
.dep("build_c", "1.0")
|
|
.build_dep("build_b_build_a", "1.0.0")
|
|
.dev_dep("build_b_dev_a", "1.0.0")
|
|
.publish();
|
|
Package::new("build_c", "1.0.0").publish();
|
|
Package::new("build_b_build_a", "1.0.0")
|
|
.dep("build_b_build_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("build_b_build_a_normal_a", "1.0.0").publish();
|
|
Package::new("build_b_dev_a", "1.0.0")
|
|
.dep("build_b_dev_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("build_b_dev_a_normal_a", "1.0.0").publish();
|
|
Package::new("build_d", "1.0.0").publish();
|
|
|
|
Package::new("dev_a", "1.0.0").dep("dev_b", "1.0").publish();
|
|
Package::new("dev_b", "1.0.0")
|
|
.dep("dev_c", "1.0")
|
|
.build_dep("dev_b_build_a", "1.0.0")
|
|
.dev_dep("dev_b_dev_a", "1.0.0")
|
|
.publish();
|
|
Package::new("dev_c", "1.0.0").publish();
|
|
Package::new("dev_b_build_a", "1.0.0")
|
|
.dep("dev_b_build_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("dev_b_build_a_normal_a", "1.0.0").publish();
|
|
Package::new("dev_b_dev_a", "1.0.0")
|
|
.dep("dev_b_dev_a_normal_a", "1.0.0")
|
|
.publish();
|
|
Package::new("dev_b_dev_a_normal_a", "1.0.0").publish();
|
|
Package::new("dev_d", "1.0.0").publish();
|
|
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
version = "0.1.0"
|
|
|
|
[features]
|
|
default = ["foo"]
|
|
foo = ["dep:normal_a"]
|
|
|
|
[dependencies]
|
|
normal_a = { version = "1.0", optional = true }
|
|
normal_d = "1.0"
|
|
|
|
[build-dependencies]
|
|
build_a = "1.0"
|
|
build_d = "1.0"
|
|
|
|
[dev-dependencies]
|
|
dev_a = "1.0"
|
|
dev_d = "1.0"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.file("build.rs", "fn main() {}")
|
|
.build();
|
|
|
|
snapbox::cmd::Command::cargo_ui()
|
|
.arg("tree")
|
|
.arg("--edges=features")
|
|
.current_dir(p.root())
|
|
.assert()
|
|
.success()
|
|
.stdout_eq(file!["stdout.term.svg"])
|
|
.stderr_eq(file!["stderr.term.svg"]);
|
|
}
|