diff --git a/tests/testsuite/cargo_tree/dupe/mod.rs b/tests/testsuite/cargo_tree/dupe/mod.rs new file mode 100644 index 000000000..fe0aa4271 --- /dev/null +++ b/tests/testsuite/cargo_tree/dupe/mod.rs @@ -0,0 +1,36 @@ +use cargo_test_support::file; +use cargo_test_support::prelude::*; +use cargo_test_support::project; +use cargo_test_support::registry::Package; + +#[cargo_test] +fn case() { + Package::new("a", "1.0.0").dep("b", "1.0").publish(); + Package::new("b", "1.0.0").dep("c", "1.0").publish(); + Package::new("c", "1.0.0").publish(); + + let p = project() + .file( + "Cargo.toml", + r#" + [package] + name = "foo" + version = "0.1.0" + + [dependencies] + a = "1.0" + b = "1.0" + "#, + ) + .file("src/lib.rs", "") + .file("build.rs", "fn main() {}") + .build(); + + snapbox::cmd::Command::cargo_ui() + .arg("tree") + .current_dir(p.root()) + .assert() + .success() + .stdout_eq(file!["stdout.term.svg"]) + .stderr_eq(file!["stderr.term.svg"]); +} diff --git a/tests/testsuite/cargo_tree/dupe/stderr.term.svg b/tests/testsuite/cargo_tree/dupe/stderr.term.svg new file mode 100644 index 000000000..3ce39fdd2 --- /dev/null +++ b/tests/testsuite/cargo_tree/dupe/stderr.term.svg @@ -0,0 +1,37 @@ + + + + + + + Updating `dummy-registry` index + + Locking 3 packages to latest compatible versions + + Downloading crates ... + + Downloaded c v1.0.0 (registry `dummy-registry`) + + Downloaded b v1.0.0 (registry `dummy-registry`) + + Downloaded a v1.0.0 (registry `dummy-registry`) + + + + + + diff --git a/tests/testsuite/cargo_tree/dupe/stdout.term.svg b/tests/testsuite/cargo_tree/dupe/stdout.term.svg new file mode 100644 index 000000000..f6f0eed2c --- /dev/null +++ b/tests/testsuite/cargo_tree/dupe/stdout.term.svg @@ -0,0 +1,33 @@ + + + + + + + foo v0.1.0 ([ROOT]/foo) + + ├── a v1.0.0 + + │ └── b v1.0.0 + + │ └── c v1.0.0 + + └── b v1.0.0 (*) + + + + + + diff --git a/tests/testsuite/cargo_tree/edge_kind/mod.rs b/tests/testsuite/cargo_tree/edge_kind/mod.rs new file mode 100644 index 000000000..6693e8bfb --- /dev/null +++ b/tests/testsuite/cargo_tree/edge_kind/mod.rs @@ -0,0 +1,100 @@ +use cargo_test_support::file; +use cargo_test_support::prelude::*; +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"]); +} diff --git a/tests/testsuite/cargo_tree/edge_kind/stderr.term.svg b/tests/testsuite/cargo_tree/edge_kind/stderr.term.svg new file mode 100644 index 000000000..7055876d1 --- /dev/null +++ b/tests/testsuite/cargo_tree/edge_kind/stderr.term.svg @@ -0,0 +1,67 @@ + + + + + + + Updating `dummy-registry` index + + Locking 18 packages to latest compatible versions + + Downloading crates ... + + Downloaded normal_d v1.0.0 (registry `dummy-registry`) + + Downloaded normal_c v1.0.0 (registry `dummy-registry`) + + Downloaded normal_b_build_a_normal_a v1.0.0 (registry `dummy-registry`) + + Downloaded normal_b_build_a v1.0.0 (registry `dummy-registry`) + + Downloaded normal_b v1.0.0 (registry `dummy-registry`) + + Downloaded normal_a v1.0.0 (registry `dummy-registry`) + + Downloaded dev_d v1.0.0 (registry `dummy-registry`) + + Downloaded dev_c v1.0.0 (registry `dummy-registry`) + + Downloaded dev_b_build_a_normal_a v1.0.0 (registry `dummy-registry`) + + Downloaded dev_b_build_a v1.0.0 (registry `dummy-registry`) + + Downloaded dev_b v1.0.0 (registry `dummy-registry`) + + Downloaded dev_a v1.0.0 (registry `dummy-registry`) + + Downloaded build_d v1.0.0 (registry `dummy-registry`) + + Downloaded build_c v1.0.0 (registry `dummy-registry`) + + Downloaded build_b_build_a_normal_a v1.0.0 (registry `dummy-registry`) + + Downloaded build_b_build_a v1.0.0 (registry `dummy-registry`) + + Downloaded build_b v1.0.0 (registry `dummy-registry`) + + Downloaded build_a v1.0.0 (registry `dummy-registry`) + + + + + + diff --git a/tests/testsuite/cargo_tree/edge_kind/stdout.term.svg b/tests/testsuite/cargo_tree/edge_kind/stdout.term.svg new file mode 100644 index 000000000..bd9b16b07 --- /dev/null +++ b/tests/testsuite/cargo_tree/edge_kind/stdout.term.svg @@ -0,0 +1,107 @@ + + + + + + + foo v0.1.0 ([ROOT]/foo) + + ├── normal_a feature "default" + + │ └── normal_a v1.0.0 + + │ └── normal_b feature "default" + + │ └── normal_b v1.0.0 + + │ └── normal_c feature "default" + + │ └── normal_c v1.0.0 + + │ [build-dependencies] + + │ └── normal_b_build_a feature "default" + + │ └── normal_b_build_a v1.0.0 + + │ └── normal_b_build_a_normal_a feature "default" + + │ └── normal_b_build_a_normal_a v1.0.0 + + └── normal_d feature "default" + + └── normal_d v1.0.0 + + [build-dependencies] + + ├── build_a feature "default" + + │ └── build_a v1.0.0 + + │ └── build_b feature "default" + + │ └── build_b v1.0.0 + + │ └── build_c feature "default" + + │ └── build_c v1.0.0 + + │ [build-dependencies] + + │ └── build_b_build_a feature "default" + + │ └── build_b_build_a v1.0.0 + + │ └── build_b_build_a_normal_a feature "default" + + │ └── build_b_build_a_normal_a v1.0.0 + + └── build_d feature "default" + + └── build_d v1.0.0 + + [dev-dependencies] + + ├── dev_a feature "default" + + │ └── dev_a v1.0.0 + + │ └── dev_b feature "default" + + │ └── dev_b v1.0.0 + + │ └── dev_c feature "default" + + │ └── dev_c v1.0.0 + + │ [build-dependencies] + + │ └── dev_b_build_a feature "default" + + │ └── dev_b_build_a v1.0.0 + + │ └── dev_b_build_a_normal_a feature "default" + + │ └── dev_b_build_a_normal_a v1.0.0 + + └── dev_d feature "default" + + └── dev_d v1.0.0 + + + + + + diff --git a/tests/testsuite/cargo_tree/mod.rs b/tests/testsuite/cargo_tree/mod.rs index 56d6de9c5..2c2763c37 100644 --- a/tests/testsuite/cargo_tree/mod.rs +++ b/tests/testsuite/cargo_tree/mod.rs @@ -1,3 +1,5 @@ mod deps; +mod dupe; +mod edge_kind; mod features; mod help;