};
}
+#[macro_export]
+macro_rules! curr_dir {
+ () => {
+ std::path::Path::new(file!()).parent().unwrap()
+ };
+}
+
#[track_caller]
pub fn panic_error(what: &str, err: impl Into<anyhow::Error>) -> ! {
let err = err.into();
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package v99999.0.0 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v99999.0.0 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-inflector = "0.11.4"
-linked-hash-map = "0.5.4"
+++ /dev/null
- Updating `dummy-registry` index
-warning: translating `linked_hash_map` to `linked-hash-map`
-warning: translating `Inflector` to `inflector`
- Adding linked-hash-map v0.5.4 to dependencies.
- Features:
- - clippy
- - heapsize
- - heapsize_impl
- - nightly
- - serde
- - serde_impl
- - serde_test
- Adding inflector v0.11.4 to dependencies.
- Features:
- + heavyweight
- + lazy_static
- + regex
- - unstable
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[build-dependencies]
-my-build-package1 = "99999.0.0"
-my-build-package2 = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-build-package1 v99999.0.0 to build-dependencies.
- Adding my-build-package2 v99999.0.0 to build-dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-some-package = { package = "my-package1", version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-some-package = { package = "my-package2", version = "99999.0.0", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package2 v99999.0.0 to optional dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package = { version = "99999.0.0", default_features = false }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package = { version = "99999.0.0", default_features = false }
+++ /dev/null
-error: Use of `default_features` in `my-package` is unsupported, please switch to `default-features`
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev_dependencies]
-my-package = "99999.0.0"
-
-[build_dependencies]
-my-package = "99999.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev_dependencies]
-my-package = "99999.0.0"
-
-[build_dependencies]
-my-package = "99999.0.0"
+++ /dev/null
-error: Deprecated dependency sections are unsupported: dev_dependencies, build_dependencies
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
+++ /dev/null
- Adding foo (workspace) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
+++ /dev/null
- Adding foo (workspace) to dependencies.
- Features:
- + default-base
- + default-merge-base
- + default-test-base
- + merge
- + merge-base
- + test
- + test-base
- - unrelated
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, optional = true }
+++ /dev/null
- Adding foo (workspace) to optional dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-my-dev-package1 = "99999.0.0"
-my-dev-package2 = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-dev-package1 v99999.0.0 to dev-dependencies.
- Adding my-dev-package2 v99999.0.0 to dev-dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: The argument '--dev' cannot be used with '--build'
-
-USAGE:
- cargo add [OPTIONS] <DEP>[@<VERSION>] ...
- cargo add [OPTIONS] --path <PATH> ...
- cargo add [OPTIONS] --git <URL> ...
-
-For more information try --help
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["one", "two"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["one", "two"], registry = "alternative" }
-
-[dev-dependencies]
-cargo-list-test-fixture-dependency = { path = "dependency" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package v99999.0.0 to dependencies.
-warning: aborting add due to dry run
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + eyes
- - ears
- - mouth
- - nose
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- - ears
- - eyes
- - mouth
- - nose
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + eyes
- + nose
- - ears
- - mouth
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes"] }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + eyes
- - ears
- - mouth
- - nose
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + eyes
- + nose
- - ears
- - mouth
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + noze
- - ears
- - eyes
- - mouth
- - nose
-error: unrecognized features: ["noze"]
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-git-package = { git = "[ROOTURL]/git-package", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-git-package = { git = "[ROOTURL]/git-package", branch = "dev", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: cannot specify a git URL (`https://github.com/dcjanus/invalid`) with a version (`0.4.3`).
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-git-package = { git = "[ROOTURL]/git-package" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dev-dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-git-package = { git = "[ROOTURL]/git-package", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
-error: multiple packages found at `[ROOTURL]/git-package`: my-package1, my-package2
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { git = "[ROOTURL]/git-package", version = "0.3.0" }
-my-package2 = { git = "[ROOTURL]/git-package", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding my-package1 (git) to dependencies.
- Adding my-package2 (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
-error: the crate `git_package@[ROOTURL]/git-package` could not be found at `[ROOTURL]/git-package`
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-versioned-package = { git = "[ROOTURL]/versioned-package", version = "0.3.0", registry = "alternative" }
+++ /dev/null
- Updating git repository `[ROOTURL]/versioned-package`
- Adding versioned-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-git-package = { git = "[ROOTURL]/git-package", rev = "[..]", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-git-package = { git = "[ROOTURL]/git-package", tag = "v1.0.0", version = "0.3.0" }
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
- Adding git-package (git) to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-prerelease_only = "0.2.0-alpha.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding prerelease_only v0.2.0-alpha.1 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: Found argument '--flag' which wasn't expected, or isn't valid in this context
-
- If you tried to supply `--flag` as a value rather than a flag, use `-- --flag`
-
-USAGE:
- cargo add [OPTIONS] <DEP>[@<VERSION>] ...
- cargo add [OPTIONS] --path <PATH> ...
- cargo add [OPTIONS] --git <URL> ...
-
-For more information try --help
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating git repository `[ROOTURL]/case/does-not-exist/`
-...
-error: failed to load source for dependency `fake-git`
-
-Caused by:
- Unable to update [ROOTURL]/case/does-not-exist/
-
-Caused by:
- failed to clone into: [ROOT]/home/.cargo/git/db/does-not-exist-[..]
-
-Caused by:
-...
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating git repository `[ROOTURL]/git-package`
-error: the crate `not-in-git@[ROOTURL]/git-package` could not be found at `[ROOTURL]/git-package`
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
+++ /dev/null
-error: cannot override workspace dependency with `--default-features`, either change `workspace.dependencies.foo.default-features` or define the dependency exclusively in the package's manifest
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
+++ /dev/null
-error: cannot override workspace dependency with `--default-features`, either change `workspace.dependencies.foo.default-features` or define the dependency exclusively in the package's manifest
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "dependency-alt"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo-alt"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "dependency-alt"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
+++ /dev/null
-[package]
-name = "foo-alt"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
+++ /dev/null
-error: cannot override workspace dependency with `--rename`, either change `workspace.dependencies.foo.package` or define the dependency exclusively in the package's manifest
+++ /dev/null
-[workspace]
-
-[package]
-name = "manifest-invalid-test-fixture"
-version = "0.1.0"
-
-[invalid-section]
-key = invalid-value
+++ /dev/null
-[workspace]
-
-[package]
-name = "manifest-invalid-test-fixture"
-version = "0.1.0"
-
-[invalid-section]
-key = invalid-value
+++ /dev/null
-error: failed to parse manifest at `[ROOT]/case/Cargo.toml`
-
-Caused by:
- could not parse input as TOML
-
-Caused by:
- TOML parse error at line 8, column 7
- |
- 8 | key = invalid-value
- | ^
- Unexpected `v`
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Updating `dummy-registry` index
-error: the crate `lets_hope_nobody_ever_publishes_this_crate` could not be found in registry index.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: failed to load source for dependency `cargo-list-test-fixture`
-
-Caused by:
- Unable to update [ROOT]/case/tests/fixtures/local
-
-Caused by:
- failed to read `[ROOT]/case/tests/fixtures/local/Cargo.toml`
-
-Caused by:
- [..]
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: the crate `not-at-path@[ROOT]/case/dependency` could not be found at `[ROOT]/case/dependency`
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
- Adding cargo-list-test-fixture (local) to dependencies.
-error: cannot add `cargo-list-test-fixture` as a dependency to itself
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: The argument '--target <TARGET>' requires a value but none was supplied
-
-USAGE:
- cargo add [OPTIONS] <DEP>[@<VERSION>] ...
- cargo add [OPTIONS] --path <PATH> ...
- cargo add [OPTIONS] --git <URL> ...
-
-For more information try --help
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: invalid version requirement `invalid-version-string`
-
-Caused by:
- unexpected character 'i' while parsing major version number
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- - ears
- - eyes
- - mouth
- - nose
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "optional-dep"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.1.3", path = "../dependency" }
+++ /dev/null
- Adding your-face (local) to dependencies.
- Features:
- + mouth
- + nose
- - eyes
- - optional-dependency
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "optional-dep"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.1.3", path = "../dependency", default-features = false }
+++ /dev/null
- Adding your-face (local) to dependencies.
- Features:
- - eyes
- - mouth
- - nose
- - optional-dependency
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
+++ /dev/null
- Adding foo (workspace) to dependencies.
- Features:
- + default-base
- + default-merge-base
- + default-test-base
- + merge
- + merge-base
- + test
- + test-base
- - unrelated
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: feature `nose` must be qualified by the dependency its being activated for, like `my-package1/nose`, `your-face/nose`
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: cannot specify multiple crates with `--rename`
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package = "99999.0.0"
-my-package1 = ">=0.1.1"
-my-package2 = "0.2.3"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 >=0.1.1 to dependencies.
- Adding my-package2 v0.2.3 to dependencies.
- Adding my-package v99999.0.0 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: The following required arguments were not provided:
- <DEP_ID|--path <PATH>|--git <URI>>
-
-USAGE:
- cargo add [OPTIONS] <DEP>[@<VERSION>] ...
- cargo add [OPTIONS] --path <PATH> ...
- cargo add [OPTIONS] --git <URL> ...
-
-For more information try --help
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", default-features = false }
-my-package2 = { version = "0.4.1", default-features = false }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", optional = true }
-my-package2 = { version = "0.4.1", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to optional dependencies.
- Adding my-package2 v0.4.1 to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", default-features = true }
-my-package2 = { version = "0.4.1", default-features = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", default-features = false }
-my-package2 = { version = "0.4.1", default-features = false }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes"] }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + eyes
- + nose
- - ears
- - mouth
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { git = "git://git.git", branch = "main", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { optional = true, path = "../dependency", version = "0.0.0" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to optional dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-test = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-test = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
+++ /dev/null
- Adding foo (workspace) to dependencies.
- Features:
- + test
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
+++ /dev/null
- Adding foo (workspace) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, optional = true }
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, optional = true }
+++ /dev/null
- Adding foo (workspace) to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "99999.0.0", features = ["eyes"] }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-unrelateed-crate = "99999.0.0"
-your-face = { version = "99999.0.0", features = ["eyes", "nose", "mouth", "ears"] }
+++ /dev/null
- Updating `dummy-registry` index
- Adding unrelateed-crate v99999.0.0 to dependencies.
- Adding your-face v99999.0.0 to dependencies.
- Features:
- + ears
- + eyes
- + mouth
- + nose
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
- Adding your-face (local) to dev-dependencies.
- Features:
- + mouth
- + nose
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
- Adding your-face (local) to optional dependencies.
- Features:
- + mouth
- + nose
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", default-features = false }
-my-package2 = { version = "0.4.1", default-features = false }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", default-features = false }
-my-package2 = { version = "0.4.1", default-features = false }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0" }
-my-package2 = { version = "0.4.1" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", optional = false }
-my-package2 = { version = "0.4.1", optional = false }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", optional = true }
-my-package2 = { version = "0.4.1", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to optional dependencies.
- Adding my-package2 v0.4.1 to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "0.4.1"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", optional = true }
-my-package2 = { version = "0.4.1", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to optional dependencies.
- Adding my-package2 v0.4.1 to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[features]
-default = ["my-package1"]
-other = ["my-package1/nose"]
-
-[dependencies]
-my-package1 = { version = "99999.0.0", optional = true }
-my-package2 = { version = "0.4.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[features]
-default = []
-other = ["my-package1/nose"]
-
-[dependencies]
-my-package1 = { version = "99999.0.0" }
-my-package2 = { version = "0.4.1" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v0.4.1 to dependencies.
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
-[workspace]
-exclude = ["dependency"]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "your-face"
-version = "0.0.0"
-
-[features]
-mouth = []
-nose = []
+++ /dev/null
- Adding your-face (local) to optional dependencies.
- Features:
- + mouth
- + nose
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { optional = true, path = "../dependency" }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { optional = true, version = "20.0" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding cargo-list-test-fixture-dependency v20.0 to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
-versioned-package = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding versioned-package v99999.0.0 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
-a2 = { version = "99999.0.0", package = "versioned-package" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding versioned-package v99999.0.0 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding versioned-package v0.1.1 to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-versioned-package = { version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-versioned-package = { version = "0.3.0", optional = true, git = "[ROOTURL]/versioned-package" }
+++ /dev/null
- Updating git repository `[ROOTURL]/versioned-package`
- Adding versioned-package (git) to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", optional = true, path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to optional dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-versioned-package = { version = "0.1.1", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-renamed = { version = "99999.0.0", package = "versioned-package" }
-versioned-package = { version = "0.1.1", optional = true }
+++ /dev/null
- Updating `dummy-registry` index
- Adding versioned-package v99999.0.0 to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo.workspace = true
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding foo (local) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
\ No newline at end of file
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { features = ["test"], path = "../dependency", version = "0.0.0" }
+++ /dev/null
- Adding foo (local) to dependencies.
- Features:
- + default-base
- + default-merge-base
- + default-test-base
- + test
- + test-base
- - merge
- - merge-base
- - unrelated
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-cargo-list-test-fixture-dependency = { path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "optional-dep"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency", "optional"]
+++ /dev/null
-[package]
-name = "your-face"
-version = "0.1.3"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-optional-dependency = { path = "../optional", optional = true }
-
-[features]
-default = ["mouth"]
-nose = []
-mouth = ["nose"]
-eyes = []
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: `your-face/nose` is unsupported when inferring the crate name, use `nose`
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-error: the crate `cargo_list_test_fixture_dependency@[ROOT]/case/dependency` could not be found at `[ROOT]/case/dependency`
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-atty = "0.2.13"
-toml_edit = "0.1.5"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-atty = "0.2.13"
-toml = "99999.0.0"
-toml_edit = "0.1.5"
+++ /dev/null
- Updating `dummy-registry` index
- Adding toml v99999.0.0 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-toml_edit = "0.1.5"
-atty = "0.2.13"
-toml = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding toml v99999.0.0 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-your-face = "99999.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package1 = { version = "99999.0.0", registry = "alternative" }
-my-package2 = { version = "99999.0.0", registry = "alternative" }
+++ /dev/null
- Updating `alternative` index
- Adding my-package1 v99999.0.0 to dependencies.
- Adding my-package2 v99999.0.0 to dependencies.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-renamed = { version = "99999.0.0", package = "my-package" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package v99999.0.0 to dependencies.
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[features]
-eyes = ["your-face?/eyes"]
-
-[dependencies]
-your-face = { version = "99999.0.0", optional = true }
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[features]
-eyes = ["your-face/eyes"]
-
-[dependencies]
-your-face = { version = "99999.0.0" }
+++ /dev/null
- Updating `dummy-registry` index
- Adding your-face v99999.0.0 to dependencies.
- Features:
- - ears
- - eyes
- - mouth
- - nose
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[target.i686-unknown-linux-gnu.dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies for target `i686-unknown-linux-gnu`.
- Adding my-package2 v99999.0.0 to dependencies for target `i686-unknown-linux-gnu`.
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[target."cfg(unix)".dependencies]
-my-package1 = "99999.0.0"
-my-package2 = "99999.0.0"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package1 v99999.0.0 to dependencies for target `cfg(unix)`.
- Adding my-package2 v99999.0.0 to dependencies for target `cfg(unix)`.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["not_recognized"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
-
-[workspace.dependencies]
-foo = { version = "0.0.0", path = "./dependency", features = ["not_recognized"] }
+++ /dev/null
-[package]
-name = "foo"
-version = "0.0.0"
-
-[features]
-default-base = []
-default-test-base = []
-default-merge-base = []
-default = ["default-base", "default-test-base", "default-merge-base"]
-test-base = []
-test = ["test-base", "default-test-base"]
-merge-base = []
-merge = ["merge-base", "default-merge-base"]
-unrelated = []
\ No newline at end of file
+++ /dev/null
-cargo-features = ["workspace-inheritance"]
-
-[package]
-name = "bar"
-version = "0.0.0"
-
-[dependencies]
-foo = { workspace = true, features = ["test"] }
+++ /dev/null
- Adding foo (workspace) to dependencies.
- Features:
- + default-base
- + default-merge-base
- + default-test-base
- + not_recognized
- + test
- + test-base
- - merge
- - merge-base
- - unrelated
-error: unrecognized features: ["not_recognized"]
+++ /dev/null
-../add-basic.in
\ No newline at end of file
+++ /dev/null
-[workspace]
-
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-my-package = ">=0.1.1"
+++ /dev/null
- Updating `dummy-registry` index
- Adding my-package >=0.1.1 to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dependencies]
-cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dependencies.
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
+++ /dev/null
-[workspace]
-members = ["primary", "dependency"]
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture-dependency"
-version = "0.0.0"
+++ /dev/null
-[package]
-name = "cargo-list-test-fixture"
-version = "0.0.0"
-
-[dev-dependencies]
-cargo-list-test-fixture-dependency = { path = "../dependency" }
+++ /dev/null
- Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
+++ /dev/null
-use cargo_test_support::compare::assert;
-use cargo_test_support::prelude::*;
-use cargo_test_support::Project;
-
-mod build_prefer_existing_version;
-
-fn init_registry() {
- cargo_test_support::registry::init();
- add_registry_packages(false);
-}
-
-fn init_alt_registry() {
- cargo_test_support::registry::alt_init();
- add_registry_packages(true);
-}
-
-fn add_registry_packages(alt: bool) {
- for name in [
- "my-package",
- "my-package1",
- "my-package2",
- "my-dev-package1",
- "my-dev-package2",
- "my-build-package1",
- "my-build-package2",
- "toml",
- "versioned-package",
- "cargo-list-test-fixture-dependency",
- "unrelateed-crate",
- ] {
- cargo_test_support::registry::Package::new(name, "0.1.1+my-package")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new(name, "0.2.3+my-package")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new(name, "0.4.1+my-package")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new(name, "20.0.0+my-package")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new(name, "99999.0.0+my-package")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new(name, "99999.0.0-alpha.1+my-package")
- .alternative(alt)
- .publish();
- }
-
- cargo_test_support::registry::Package::new("prerelease_only", "0.2.0-alpha.1")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new("test_breaking", "0.2.0")
- .alternative(alt)
- .publish();
- cargo_test_support::registry::Package::new("test_nonbreaking", "0.1.1")
- .alternative(alt)
- .publish();
-
- // Normalization
- cargo_test_support::registry::Package::new("linked-hash-map", "0.5.4")
- .alternative(alt)
- .feature("clippy", &[])
- .feature("heapsize", &[])
- .feature("heapsize_impl", &[])
- .feature("nightly", &[])
- .feature("serde", &[])
- .feature("serde_impl", &[])
- .feature("serde_test", &[])
- .publish();
- cargo_test_support::registry::Package::new("inflector", "0.11.4")
- .alternative(alt)
- .feature("default", &["heavyweight", "lazy_static", "regex"])
- .feature("heavyweight", &[])
- .feature("lazy_static", &[])
- .feature("regex", &[])
- .feature("unstable", &[])
- .publish();
-
- cargo_test_support::registry::Package::new("your-face", "99999.0.0+my-package")
- .alternative(alt)
- .feature("nose", &[])
- .feature("mouth", &[])
- .feature("eyes", &[])
- .feature("ears", &[])
- .publish();
-}
-
-#[cargo_test]
-fn add_basic() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/add_basic/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/add_basic/stdout.log")
- .stderr_matches_path("tests/snapshots/add/add_basic/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/add_basic/out", &project_root);
-}
-
-#[cargo_test]
-fn add_multiple() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/add_multiple/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/add_multiple/stdout.log")
- .stderr_matches_path("tests/snapshots/add/add_multiple/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/add_multiple/out", &project_root);
-}
-
-#[cargo_test]
-fn quiet() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/quiet/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("--quiet your-face")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/quiet/stdout.log")
- .stderr_matches_path("tests/snapshots/add/quiet/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/quiet/out", &project_root);
-}
-
-#[cargo_test]
-fn add_normalized_name_external() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/add_normalized_name_external/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("linked_hash_map Inflector")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/add_normalized_name_external/stdout.log")
- .stderr_matches_path("tests/snapshots/add/add_normalized_name_external/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/add_normalized_name_external/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn infer_prerelease() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/infer_prerelease/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("prerelease_only")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/infer_prerelease/stdout.log")
- .stderr_matches_path("tests/snapshots/add/infer_prerelease/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/infer_prerelease/out", &project_root);
-}
-
-#[cargo_test]
-fn build() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/build/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("--build my-build-package1 my-build-package2")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/build/stdout.log")
- .stderr_matches_path("tests/snapshots/add/build/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/build/out", &project_root);
-}
-
-#[cargo_test]
-fn default_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/default_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/default_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/default_features/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/default_features/out", &project_root);
-}
-
-#[cargo_test]
-fn require_weak() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/require_weak/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --no-optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/require_weak/stdout.log")
- .stderr_matches_path("tests/snapshots/add/require_weak/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/require_weak/out", &project_root);
-}
-
-#[cargo_test]
-fn detect_workspace_inherit() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/detect_workspace_inherit/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/detect_workspace_inherit/stdout.log")
- .stderr_matches_path("tests/snapshots/add/detect_workspace_inherit/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/detect_workspace_inherit/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn detect_workspace_inherit_features() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/detect_workspace_inherit_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar", "--features", "test"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/detect_workspace_inherit_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/detect_workspace_inherit_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/detect_workspace_inherit_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn detect_workspace_inherit_optional() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/detect_workspace_inherit_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar", "--optional"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/detect_workspace_inherit_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/detect_workspace_inherit_optional/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/detect_workspace_inherit_optional/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn dev() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/dev/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("--dev my-dev-package1 my-dev-package2")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/dev/stdout.log")
- .stderr_matches_path("tests/snapshots/add/dev/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/dev/out", &project_root);
-}
-
-#[cargo_test]
-fn dev_build_conflict() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/dev_build_conflict/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package --dev --build")
- .current_dir(cwd)
- .assert()
- .code(1)
- .stdout_matches_path("tests/snapshots/add/dev_build_conflict/stdout.log")
- .stderr_matches_path("tests/snapshots/add/dev_build_conflict/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/dev_build_conflict/out", &project_root);
-}
-
-#[cargo_test]
-fn dev_prefer_existing_version() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/dev_prefer_existing_version/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --dev")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/dev_prefer_existing_version/stdout.log")
- .stderr_matches_path("tests/snapshots/add/dev_prefer_existing_version/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/dev_prefer_existing_version/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn dry_run() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/dry_run/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package --dry-run")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/dry_run/stdout.log")
- .stderr_matches_path("tests/snapshots/add/dry_run/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/dry_run/out", &project_root);
-}
-
-#[cargo_test]
-fn features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features eyes")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/features/out", &project_root);
-}
-
-#[cargo_test]
-fn features_empty() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features_empty/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features ''")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/features_empty/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features_empty/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/features_empty/out", &project_root);
-}
-
-#[cargo_test]
-fn features_multiple_occurrences() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features_multiple_occurrences/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features eyes --features nose")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/features_multiple_occurrences/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features_multiple_occurrences/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/features_multiple_occurrences/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn features_preserve() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features_preserve/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/features_preserve/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features_preserve/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/features_preserve/out", &project_root);
-}
-
-#[cargo_test]
-fn features_spaced_values() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features_spaced_values/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features eyes,nose")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/features_spaced_values/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features_spaced_values/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/features_spaced_values/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn features_unknown() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/features_unknown/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features noze")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/features_unknown/stdout.log")
- .stderr_matches_path("tests/snapshots/add/features_unknown/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/features_unknown/out", &project_root);
-}
-
-#[cargo_test]
-fn git() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git-package", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git/out", &project_root);
-}
-
-#[cargo_test]
-fn git_inferred_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_inferred_name/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["--git", &git_url])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_inferred_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_inferred_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_inferred_name/out", &project_root);
-}
-
-#[cargo_test]
-fn git_inferred_name_multiple() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_inferred_name_multiple/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "p1/Cargo.toml",
- &cargo_test_support::basic_manifest("my-package1", "0.3.0+my-package1"),
- )
- .file("p1/src/lib.rs", "")
- .file(
- "p2/Cargo.toml",
- &cargo_test_support::basic_manifest("my-package2", "0.3.0+my-package2"),
- )
- .file("p2/src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["--git", &git_url])
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/git_inferred_name_multiple/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_inferred_name_multiple/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/git_inferred_name_multiple/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn git_normalized_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_normalized_name/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git_package", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .failure() // Fuzzy searching for paths isn't supported at this time
- .stdout_matches_path("tests/snapshots/add/git_normalized_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_normalized_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_normalized_name/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_git_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_git_name/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["not-in-git", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_git_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_git_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_git_name/out", &project_root);
-}
-
-#[cargo_test]
-fn git_branch() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_branch/in");
- let project_root = project.root();
- let cwd = &project_root;
- let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let branch = "dev";
- let find_head = || (git_repo.head().unwrap().peel_to_commit().unwrap());
- git_repo.branch(branch, &find_head(), false).unwrap();
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git-package", "--git", &git_url, "--branch", branch])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_branch/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_branch/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_branch/out", &project_root);
-}
-
-#[cargo_test]
-fn git_conflicts_namever() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_conflicts_namever/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args([
- "my-package@0.4.3",
- "--git",
- "https://github.com/dcjanus/invalid",
- ])
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/git_conflicts_namever/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_conflicts_namever/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/git_conflicts_namever/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn git_registry() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/git_registry/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("versioned-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("versioned-package", "0.3.0+versioned-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args([
- "versioned-package",
- "--git",
- &git_url,
- "--registry",
- "alternative",
- ])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_registry/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_registry/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_registry/out", &project_root);
-}
-
-#[cargo_test]
-fn git_dev() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_dev/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git-package", "--git", &git_url, "--dev"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_dev/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_dev/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_dev/out", &project_root);
-}
-
-#[cargo_test]
-fn git_rev() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_rev/in");
- let project_root = project.root();
- let cwd = &project_root;
- let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let find_head = || (git_repo.head().unwrap().peel_to_commit().unwrap());
- let head = find_head().id().to_string();
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git-package", "--git", &git_url, "--rev", &head])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_rev/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_rev/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_rev/out", &project_root);
-}
-
-#[cargo_test]
-fn git_tag() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_tag/in");
- let project_root = project.root();
- let cwd = &project_root;
- let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
- )
- .file("src/lib.rs", "")
- });
- let tag = "v1.0.0";
- cargo_test_support::git::tag(&git_repo, tag);
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["git-package", "--git", &git_url, "--tag", tag])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_tag/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_tag/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_tag/out", &project_root);
-}
-
-#[cargo_test]
-fn path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/path/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/path/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/path/out", &project_root);
-}
-
-#[cargo_test]
-fn path_inferred_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/path_inferred_name/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/path_inferred_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/path_inferred_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/path_inferred_name/out", &project_root);
-}
-
-#[cargo_test]
-fn path_inferred_name_conflicts_full_feature() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/path_inferred_name_conflicts_full_feature/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("--path ../dependency --features your-face/nose")
- .current_dir(&cwd)
- .assert()
- .code(101)
- .stdout_matches_path(
- "tests/snapshots/add/path_inferred_name_conflicts_full_feature/stdout.log",
- )
- .stderr_matches_path(
- "tests/snapshots/add/path_inferred_name_conflicts_full_feature/stderr.log",
- );
-
- assert().subset_matches(
- "tests/snapshots/add/path_inferred_name_conflicts_full_feature/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn path_normalized_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/path_normalized_name/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo_list_test_fixture_dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .failure() // Fuzzy searching for paths isn't supported at this time
- .stdout_matches_path("tests/snapshots/add/path_normalized_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/path_normalized_name/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/path_normalized_name/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_path_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_path_name/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("not-at-path --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_path_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_path_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_path_name/out", &project_root);
-}
-
-#[cargo_test]
-fn path_dev() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/path_dev/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency --dev")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/path_dev/stdout.log")
- .stderr_matches_path("tests/snapshots/add/path_dev/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/path_dev/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_arg() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_arg/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package --flag")
- .current_dir(cwd)
- .assert()
- .code(1)
- .stdout_matches_path("tests/snapshots/add/invalid_arg/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_arg/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_arg/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_git_external() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_git_external/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_url = url::Url::from_directory_path(cwd.join("does-not-exist"))
- .unwrap()
- .to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["fake-git", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_git_external/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_git_external/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_git_external/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_key_inherit_dependency() {
- let project = Project::from_template("tests/snapshots/add/invalid_key_inherit_dependency/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "--default-features", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .failure()
- .stdout_matches_path("tests/snapshots/add/invalid_key_inherit_dependency/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_key_inherit_dependency/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_key_inherit_dependency/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_key_rename_inherit_dependency() {
- let project =
- Project::from_template("tests/snapshots/add/invalid_key_rename_inherit_dependency/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["--rename", "foo", "foo-alt", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .failure()
- .stdout_matches_path("tests/snapshots/add/invalid_key_rename_inherit_dependency/stdout.log")
- .stderr_matches_path(
- "tests/snapshots/add/invalid_key_rename_inherit_dependency/stderr.log",
- );
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_key_rename_inherit_dependency/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_key_overwrite_inherit_dependency() {
- let project =
- Project::from_template("tests/snapshots/add/invalid_key_overwrite_inherit_dependency/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "--default-features", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .failure()
- .stdout_matches_path(
- "tests/snapshots/add/invalid_key_overwrite_inherit_dependency/stdout.log",
- )
- .stderr_matches_path(
- "tests/snapshots/add/invalid_key_overwrite_inherit_dependency/stderr.log",
- );
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_key_overwrite_inherit_dependency/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_path/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture --path ./tests/fixtures/local")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_path/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_path/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_path_self() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_path_self/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture --path .")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_path_self/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_path_self/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_path_self/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_manifest() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_manifest/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_manifest/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_manifest/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_manifest/out", &project_root);
-}
-
-#[cargo_test]
-fn invalid_name_external() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_name_external/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("lets_hope_nobody_ever_publishes_this_crate")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_name_external/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_name_external/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_name_external/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_target_empty() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_target_empty/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package --target ''")
- .current_dir(cwd)
- .assert()
- .code(1)
- .stdout_matches_path("tests/snapshots/add/invalid_target_empty/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_target_empty/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/invalid_target_empty/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn invalid_vers() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/invalid_vers/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package@invalid-version-string")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/invalid_vers/stdout.log")
- .stderr_matches_path("tests/snapshots/add/invalid_vers/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/invalid_vers/out", &project_root);
-}
-
-#[cargo_test]
-fn list_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/list_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["your-face"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/list_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/list_features/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/list_features/out", &project_root);
-}
-
-#[cargo_test]
-fn list_features_path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/list_features_path/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/list_features_path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/list_features_path/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/list_features_path/out", &project_root);
-}
-
-#[cargo_test]
-fn list_features_path_no_default() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/list_features_path_no_default/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args([
- "your-face",
- "--path",
- "../dependency",
- "--no-default-features",
- ])
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/list_features_path_no_default/stdout.log")
- .stderr_matches_path("tests/snapshots/add/list_features_path_no_default/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/list_features_path_no_default/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn manifest_path_package() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/manifest_path_package/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args([
- "--manifest-path",
- "Cargo.toml",
- "--package",
- "cargo-list-test-fixture",
- "cargo-list-test-fixture-dependency",
- ])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/manifest_path_package/stdout.log")
- .stderr_matches_path("tests/snapshots/add/manifest_path_package/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/manifest_path_package/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn merge_activated_features() {
- let project = Project::from_template("tests/snapshots/add/merge_activated_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/merge_activated_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/merge_activated_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/merge_activated_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn multiple_conflicts_with_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/multiple_conflicts_with_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 your-face --features nose")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/multiple_conflicts_with_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/multiple_conflicts_with_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/multiple_conflicts_with_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn git_multiple_names() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/git_multiple_names/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("git-package", |project| {
- project
- .file(
- "p1/Cargo.toml",
- &cargo_test_support::basic_manifest("my-package1", "0.3.0+my-package1"),
- )
- .file("p1/src/lib.rs", "")
- .file(
- "p2/Cargo.toml",
- &cargo_test_support::basic_manifest("my-package2", "0.3.0+my-package2"),
- )
- .file("p2/src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["my-package1", "my-package2", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/git_multiple_names/stdout.log")
- .stderr_matches_path("tests/snapshots/add/git_multiple_names/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/git_multiple_names/out", &project_root);
-}
-
-#[cargo_test]
-fn multiple_conflicts_with_rename() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/multiple_conflicts_with_rename/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2 --rename renamed")
- .current_dir(cwd)
- .assert()
- .code(101)
- .stdout_matches_path("tests/snapshots/add/multiple_conflicts_with_rename/stdout.log")
- .stderr_matches_path("tests/snapshots/add/multiple_conflicts_with_rename/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/multiple_conflicts_with_rename/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn namever() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/namever/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1@>=0.1.1 my-package2@0.2.3 my-package")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/namever/stdout.log")
- .stderr_matches_path("tests/snapshots/add/namever/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/namever/out", &project_root);
-}
-
-#[cargo_test]
-fn no_args() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/no_args/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .current_dir(cwd)
- .assert()
- .code(1)
- .stdout_matches_path("tests/snapshots/add/no_args/stdout.log")
- .stderr_matches_path("tests/snapshots/add/no_args/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/no_args/out", &project_root);
-}
-
-#[cargo_test]
-fn no_default_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/no_default_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/no_default_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/no_default_features/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/no_default_features/out", &project_root);
-}
-
-#[cargo_test]
-fn no_optional() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/no_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/no_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/no_optional/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/no_optional/out", &project_root);
-}
-
-#[cargo_test]
-fn optional() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/optional/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/optional/out", &project_root);
-}
-
-#[cargo_test]
-fn overwrite_default_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_default_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_default_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_default_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_default_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_default_features_with_no_default_features() {
- init_registry();
- let project = Project::from_template(
- "tests/snapshots/add/overwrite_default_features_with_no_default_features/in",
- );
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path(
- "tests/snapshots/add/overwrite_default_features_with_no_default_features/stdout.log",
- )
- .stderr_matches_path(
- "tests/snapshots/add/overwrite_default_features_with_no_default_features/stderr.log",
- );
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_default_features_with_no_default_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --features nose")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_features/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/overwrite_features/out", &project_root);
-}
-
-#[cargo_test]
-fn overwrite_git_with_path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_git_with_path/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_git_with_path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_git_with_path/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_git_with_path/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_inline_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_inline_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line(
- "unrelateed-crate your-face --features your-face/nose,your-face/mouth -Fyour-face/ears",
- )
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_inline_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_inline_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_inline_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_inherit_features_noop() {
- let project = Project::from_template("tests/snapshots/add/overwrite_inherit_features_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_inherit_features_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_inherit_features_noop/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_inherit_features_noop/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_inherit_noop() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_inherit_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_inherit_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_inherit_noop/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_inherit_noop/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_inherit_optional_noop() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_inherit_optional_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_inherit_optional_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_inherit_optional_noop/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_inherit_optional_noop/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_name_dev_noop() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_name_dev_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --dev")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_name_dev_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_name_dev_noop/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_name_dev_noop/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_name_noop() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_name_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_name_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_name_noop/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/overwrite_name_noop/out", &project_root);
-}
-
-#[cargo_test]
-fn overwrite_no_default_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_no_default_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_no_default_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_no_default_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_no_default_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_no_default_features_with_default_features() {
- init_registry();
- let project = Project::from_template(
- "tests/snapshots/add/overwrite_no_default_features_with_default_features/in",
- );
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --default-features")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path(
- "tests/snapshots/add/overwrite_no_default_features_with_default_features/stdout.log",
- )
- .stderr_matches_path(
- "tests/snapshots/add/overwrite_no_default_features_with_default_features/stderr.log",
- );
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_no_default_features_with_default_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_no_optional() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_no_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_no_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_no_optional/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_no_optional/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_no_optional_with_optional() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/overwrite_no_optional_with_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_no_optional_with_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_no_optional_with_optional/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_no_optional_with_optional/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_optional() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_optional/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/overwrite_optional/out", &project_root);
-}
-
-#[cargo_test]
-fn overwrite_optional_with_no_optional() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/overwrite_optional_with_no_optional/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2@0.4.1 --no-optional")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_optional_with_no_optional/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_optional_with_no_optional/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_optional_with_no_optional/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_path_noop() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_path_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("your-face --path ./dependency")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_path_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_path_noop/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/overwrite_path_noop/out", &project_root);
-}
-
-#[cargo_test]
-fn overwrite_path_with_version() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_path_with_version/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency@20.0")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_path_with_version/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_path_with_version/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_path_with_version/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_rename_with_no_rename() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_rename_with_no_rename/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("versioned-package")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_rename_with_no_rename/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_rename_with_no_rename/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_rename_with_no_rename/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_rename_with_rename() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_rename_with_rename/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("versioned-package --rename a2")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_rename_with_rename/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_rename_with_rename/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_rename_with_rename/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn change_rename_target() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/change_rename_target/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package2 --rename some-package")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/change_rename_target/stdout.log")
- .stderr_matches_path("tests/snapshots/add/change_rename_target/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/change_rename_target/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_rename_with_rename_noop() {
- init_registry();
- let project =
- Project::from_template("tests/snapshots/add/overwrite_rename_with_rename_noop/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("versioned-package --rename a1")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_rename_with_rename_noop/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_rename_with_rename_noop/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_rename_with_rename_noop/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_version_with_git() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_version_with_git/in");
- let project_root = project.root();
- let cwd = &project_root;
- let git_dep = cargo_test_support::git::new("versioned-package", |project| {
- project
- .file(
- "Cargo.toml",
- &cargo_test_support::basic_manifest("versioned-package", "0.3.0+versioned-package"),
- )
- .file("src/lib.rs", "")
- });
- let git_url = git_dep.url().to_string();
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .args(["versioned-package", "--git", &git_url])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_version_with_git/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_version_with_git/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_version_with_git/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_version_with_path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_version_with_path/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_version_with_path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_version_with_path/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_version_with_path/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_with_rename() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_with_rename/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("versioned-package --rename renamed")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_with_rename/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_with_rename/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_with_rename/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_workspace_dep() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_workspace_dep/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "--path", "./dependency", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_workspace_dep/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_workspace_dep/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_workspace_dep/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn overwrite_workspace_dep_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/overwrite_workspace_dep_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "--path", "./dependency", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/overwrite_workspace_dep_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/overwrite_workspace_dep_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/overwrite_workspace_dep_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn preserve_sorted() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/preserve_sorted/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("toml")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/preserve_sorted/stdout.log")
- .stderr_matches_path("tests/snapshots/add/preserve_sorted/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/preserve_sorted/out", &project_root);
-}
-
-#[cargo_test]
-fn preserve_unsorted() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/preserve_unsorted/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("toml")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/preserve_unsorted/stdout.log")
- .stderr_matches_path("tests/snapshots/add/preserve_unsorted/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/preserve_unsorted/out", &project_root);
-}
-
-#[cargo_test]
-fn registry() {
- init_alt_registry();
- let project = Project::from_template("tests/snapshots/add/registry/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2 --registry alternative")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/registry/stdout.log")
- .stderr_matches_path("tests/snapshots/add/registry/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/registry/out", &project_root);
-}
-
-#[cargo_test]
-fn rename() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/rename/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package --rename renamed")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/rename/stdout.log")
- .stderr_matches_path("tests/snapshots/add/rename/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/rename/out", &project_root);
-}
-
-#[cargo_test]
-fn target() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/target/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2 --target i686-unknown-linux-gnu")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/target/stdout.log")
- .stderr_matches_path("tests/snapshots/add/target/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/target/out", &project_root);
-}
-
-#[cargo_test]
-fn target_cfg() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/target_cfg/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package1 my-package2 --target cfg(unix)")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/target_cfg/stdout.log")
- .stderr_matches_path("tests/snapshots/add/target_cfg/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/target_cfg/out", &project_root);
-}
-
-#[cargo_test]
-fn unknown_inherited_feature() {
- let project = Project::from_template("tests/snapshots/add/unknown_inherited_feature/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .masquerade_as_nightly_cargo()
- .arg("add")
- .args(["foo", "-p", "bar"])
- .current_dir(cwd)
- .assert()
- .failure()
- .stdout_matches_path("tests/snapshots/add/unknown_inherited_feature/stdout.log")
- .stderr_matches_path("tests/snapshots/add/unknown_inherited_feature/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/unknown_inherited_feature/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn vers() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/vers/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package@>=0.1.1")
- .current_dir(cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/vers/stdout.log")
- .stderr_matches_path("tests/snapshots/add/vers/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/vers/out", &project_root);
-}
-
-#[cargo_test]
-fn workspace_path() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/workspace_path/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/workspace_path/stdout.log")
- .stderr_matches_path("tests/snapshots/add/workspace_path/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/workspace_path/out", &project_root);
-}
-
-#[cargo_test]
-fn workspace_path_dev() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/workspace_path_dev/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency --path ../dependency --dev")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/workspace_path_dev/stdout.log")
- .stderr_matches_path("tests/snapshots/add/workspace_path_dev/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/workspace_path_dev/out", &project_root);
-}
-
-#[cargo_test]
-fn workspace_name() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/workspace_name/in");
- let project_root = project.root();
- let cwd = project_root.join("primary");
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("cargo-list-test-fixture-dependency")
- .current_dir(&cwd)
- .assert()
- .success()
- .stdout_matches_path("tests/snapshots/add/workspace_name/stdout.log")
- .stderr_matches_path("tests/snapshots/add/workspace_name/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/workspace_name/out", &project_root);
-}
-
-#[cargo_test]
-fn deprecated_default_features() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/deprecated_default_features/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package")
- .current_dir(&cwd)
- .assert()
- .failure()
- .stdout_matches_path("tests/snapshots/add/deprecated_default_features/stdout.log")
- .stderr_matches_path("tests/snapshots/add/deprecated_default_features/stderr.log");
-
- assert().subset_matches(
- "tests/snapshots/add/deprecated_default_features/out",
- &project_root,
- );
-}
-
-#[cargo_test]
-fn deprecated_section() {
- init_registry();
- let project = Project::from_template("tests/snapshots/add/deprecated_section/in");
- let project_root = project.root();
- let cwd = &project_root;
-
- snapbox::cmd::Command::cargo()
- .arg("add")
- .arg_line("my-package")
- .current_dir(&cwd)
- .assert()
- .failure()
- .stdout_matches_path("tests/snapshots/add/deprecated_section/stdout.log")
- .stderr_matches_path("tests/snapshots/add/deprecated_section/stderr.log");
-
- assert().subset_matches("tests/snapshots/add/deprecated_section/out", &project_root);
-}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn add_basic() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package v99999.0.0 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn add_multiple() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v99999.0.0 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn add_normalized_name_external() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("linked_hash_map Inflector")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+inflector = "0.11.4"
+linked-hash-map = "0.5.4"
--- /dev/null
+ Updating `dummy-registry` index
+warning: translating `linked_hash_map` to `linked-hash-map`
+warning: translating `Inflector` to `inflector`
+ Adding linked-hash-map v0.5.4 to dependencies.
+ Features:
+ - clippy
+ - heapsize
+ - heapsize_impl
+ - nightly
+ - serde
+ - serde_impl
+ - serde_test
+ Adding inflector v0.11.4 to dependencies.
+ Features:
+ + heavyweight
+ + lazy_static
+ + regex
+ - unstable
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn build() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("--build my-build-package1 my-build-package2")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[build-dependencies]
+my-build-package1 = "99999.0.0"
+my-build-package2 = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-build-package1 v99999.0.0 to build-dependencies.
+ Adding my-build-package2 v99999.0.0 to build-dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+some-package = { package = "my-package1", version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn change_rename_target() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package2 --rename some-package")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+some-package = { package = "my-package2", version = "99999.0.0", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package2 v99999.0.0 to optional dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package = { version = "99999.0.0", default_features = false }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn deprecated_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package")
+ .current_dir(&cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package = { version = "99999.0.0", default_features = false }
--- /dev/null
+error: Use of `default_features` in `my-package` is unsupported, please switch to `default-features`
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev_dependencies]
+my-package = "99999.0.0"
+
+[build_dependencies]
+my-package = "99999.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn deprecated_section() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package")
+ .current_dir(&cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev_dependencies]
+my-package = "99999.0.0"
+
+[build_dependencies]
+my-package = "99999.0.0"
--- /dev/null
+error: Deprecated dependency sections are unsupported: dev_dependencies, build_dependencies
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn detect_workspace_inherit() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
--- /dev/null
+ Adding foo (workspace) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn detect_workspace_inherit_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar", "--features", "test"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
--- /dev/null
+ Adding foo (workspace) to dependencies.
+ Features:
+ + default-base
+ + default-merge-base
+ + default-test-base
+ + merge
+ + merge-base
+ + test
+ + test-base
+ - unrelated
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn detect_workspace_inherit_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar", "--optional"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, optional = true }
--- /dev/null
+ Adding foo (workspace) to optional dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn dev() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("--dev my-dev-package1 my-dev-package2")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+my-dev-package1 = "99999.0.0"
+my-dev-package2 = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-dev-package1 v99999.0.0 to dev-dependencies.
+ Adding my-dev-package2 v99999.0.0 to dev-dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn dev_build_conflict() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package --dev --build")
+ .current_dir(cwd)
+ .assert()
+ .code(1)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: The argument '--dev' cannot be used with '--build'
+
+USAGE:
+ cargo add [OPTIONS] <DEP>[@<VERSION>] ...
+ cargo add [OPTIONS] --path <PATH> ...
+ cargo add [OPTIONS] --git <URL> ...
+
+For more information try --help
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["one", "two"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn dev_prefer_existing_version() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --dev")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["one", "two"], registry = "alternative" }
+
+[dev-dependencies]
+cargo-list-test-fixture-dependency = { path = "dependency" }
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn dry_run() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package --dry-run")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package v99999.0.0 to dependencies.
+warning: aborting add due to dry run
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features eyes")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + eyes
+ - ears
+ - mouth
+ - nose
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features_empty() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features ''")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ - ears
+ - eyes
+ - mouth
+ - nose
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features_multiple_occurrences() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features eyes --features nose")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + eyes
+ + nose
+ - ears
+ - mouth
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes"] }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features_preserve() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + eyes
+ - ears
+ - mouth
+ - nose
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features_spaced_values() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features eyes,nose")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + eyes
+ + nose
+ - ears
+ - mouth
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn features_unknown() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features noze")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + noze
+ - ears
+ - eyes
+ - mouth
+ - nose
+error: unrecognized features: ["noze"]
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git-package", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+git-package = { git = "[ROOTURL]/git-package", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_branch() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let branch = "dev";
+ let find_head = || (git_repo.head().unwrap().peel_to_commit().unwrap());
+ git_repo.branch(branch, &find_head(), false).unwrap();
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git-package", "--git", &git_url, "--branch", branch])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+git-package = { git = "[ROOTURL]/git-package", branch = "dev", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_conflicts_namever() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args([
+ "my-package@0.4.3",
+ "--git",
+ "https://github.com/dcjanus/invalid",
+ ])
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: cannot specify a git URL (`https://github.com/dcjanus/invalid`) with a version (`0.4.3`).
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_dev() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git-package", "--git", &git_url, "--dev"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+git-package = { git = "[ROOTURL]/git-package" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dev-dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_inferred_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+git-package = { git = "[ROOTURL]/git-package", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_inferred_name_multiple() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "p1/Cargo.toml",
+ &cargo_test_support::basic_manifest("my-package1", "0.3.0+my-package1"),
+ )
+ .file("p1/src/lib.rs", "")
+ .file(
+ "p2/Cargo.toml",
+ &cargo_test_support::basic_manifest("my-package2", "0.3.0+my-package2"),
+ )
+ .file("p2/src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+error: multiple packages found at `[ROOTURL]/git-package`: my-package1, my-package2
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_multiple_names() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "p1/Cargo.toml",
+ &cargo_test_support::basic_manifest("my-package1", "0.3.0+my-package1"),
+ )
+ .file("p1/src/lib.rs", "")
+ .file(
+ "p2/Cargo.toml",
+ &cargo_test_support::basic_manifest("my-package2", "0.3.0+my-package2"),
+ )
+ .file("p2/src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["my-package1", "my-package2", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { git = "[ROOTURL]/git-package", version = "0.3.0" }
+my-package2 = { git = "[ROOTURL]/git-package", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding my-package1 (git) to dependencies.
+ Adding my-package2 (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_normalized_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git_package", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .failure() // Fuzzy searching for paths isn't supported at this time
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+error: the crate `git_package@[ROOTURL]/git-package` could not be found at `[ROOTURL]/git-package`
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_registry() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("versioned-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("versioned-package", "0.3.0+versioned-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args([
+ "versioned-package",
+ "--git",
+ &git_url,
+ "--registry",
+ "alternative",
+ ])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+versioned-package = { git = "[ROOTURL]/versioned-package", version = "0.3.0", registry = "alternative" }
--- /dev/null
+ Updating git repository `[ROOTURL]/versioned-package`
+ Adding versioned-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_rev() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let find_head = || (git_repo.head().unwrap().peel_to_commit().unwrap());
+ let head = find_head().id().to_string();
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git-package", "--git", &git_url, "--rev", &head])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+git-package = { git = "[ROOTURL]/git-package", rev = "[..]", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn git_tag() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let (git_dep, git_repo) = cargo_test_support::git::new_repo("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let tag = "v1.0.0";
+ cargo_test_support::git::tag(&git_repo, tag);
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["git-package", "--git", &git_url, "--tag", tag])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+git-package = { git = "[ROOTURL]/git-package", tag = "v1.0.0", version = "0.3.0" }
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+ Adding git-package (git) to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn infer_prerelease() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("prerelease_only")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+prerelease_only = "0.2.0-alpha.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding prerelease_only v0.2.0-alpha.1 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_arg() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package --flag")
+ .current_dir(cwd)
+ .assert()
+ .code(1)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: Found argument '--flag' which wasn't expected, or isn't valid in this context
+
+ If you tried to supply `--flag` as a value rather than a flag, use `-- --flag`
+
+USAGE:
+ cargo add [OPTIONS] <DEP>[@<VERSION>] ...
+ cargo add [OPTIONS] --path <PATH> ...
+ cargo add [OPTIONS] --git <URL> ...
+
+For more information try --help
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_git_external() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_url = url::Url::from_directory_path(cwd.join("does-not-exist"))
+ .unwrap()
+ .to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["fake-git", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating git repository `[ROOTURL]/case/does-not-exist/`
+...
+error: failed to load source for dependency `fake-git`
+
+Caused by:
+ Unable to update [ROOTURL]/case/does-not-exist/
+
+Caused by:
+ failed to clone into: [ROOT]/home/.cargo/git/db/does-not-exist-[..]
+
+Caused by:
+...
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_git_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("git-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("git-package", "0.3.0+git-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["not-in-git", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating git repository `[ROOTURL]/git-package`
+error: the crate `not-in-git@[ROOTURL]/git-package` could not be found at `[ROOTURL]/git-package`
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_key_inherit_dependency() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "--default-features", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
--- /dev/null
+error: cannot override workspace dependency with `--default-features`, either change `workspace.dependencies.foo.default-features` or define the dependency exclusively in the package's manifest
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_key_overwrite_inherit_dependency() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "--default-features", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
--- /dev/null
+error: cannot override workspace dependency with `--default-features`, either change `workspace.dependencies.foo.default-features` or define the dependency exclusively in the package's manifest
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "dependency-alt"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo-alt"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_key_rename_inherit_dependency() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["--rename", "foo", "foo-alt", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "dependency-alt"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
--- /dev/null
+[package]
+name = "foo-alt"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
--- /dev/null
+error: cannot override workspace dependency with `--rename`, either change `workspace.dependencies.foo.package` or define the dependency exclusively in the package's manifest
--- /dev/null
+[workspace]
+
+[package]
+name = "manifest-invalid-test-fixture"
+version = "0.1.0"
+
+[invalid-section]
+key = invalid-value
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_manifest() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "manifest-invalid-test-fixture"
+version = "0.1.0"
+
+[invalid-section]
+key = invalid-value
--- /dev/null
+error: failed to parse manifest at `[ROOT]/case/Cargo.toml`
+
+Caused by:
+ could not parse input as TOML
+
+Caused by:
+ TOML parse error at line 8, column 7
+ |
+ 8 | key = invalid-value
+ | ^
+ Unexpected `v`
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_name_external() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("lets_hope_nobody_ever_publishes_this_crate")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+error: the crate `lets_hope_nobody_ever_publishes_this_crate` could not be found in registry index.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture --path ./tests/fixtures/local")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: failed to load source for dependency `cargo-list-test-fixture`
+
+Caused by:
+ Unable to update [ROOT]/case/tests/fixtures/local
+
+Caused by:
+ failed to read `[ROOT]/case/tests/fixtures/local/Cargo.toml`
+
+Caused by:
+ [..]
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_path_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("not-at-path --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: the crate `not-at-path@[ROOT]/case/dependency` could not be found at `[ROOT]/case/dependency`
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_path_self() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture --path .")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+ Adding cargo-list-test-fixture (local) to dependencies.
+error: cannot add `cargo-list-test-fixture` as a dependency to itself
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_target_empty() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package --target ''")
+ .current_dir(cwd)
+ .assert()
+ .code(1)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: The argument '--target <TARGET>' requires a value but none was supplied
+
+USAGE:
+ cargo add [OPTIONS] <DEP>[@<VERSION>] ...
+ cargo add [OPTIONS] --path <PATH> ...
+ cargo add [OPTIONS] --git <URL> ...
+
+For more information try --help
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn invalid_vers() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package@invalid-version-string")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: invalid version requirement `invalid-version-string`
+
+Caused by:
+ unexpected character 'i' while parsing major version number
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn list_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["your-face"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ - ears
+ - eyes
+ - mouth
+ - nose
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "optional-dep"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn list_features_path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.1.3", path = "../dependency" }
--- /dev/null
+ Adding your-face (local) to dependencies.
+ Features:
+ + mouth
+ + nose
+ - eyes
+ - optional-dependency
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "optional-dep"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn list_features_path_no_default() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args([
+ "your-face",
+ "--path",
+ "../dependency",
+ "--no-default-features",
+ ])
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.1.3", path = "../dependency", default-features = false }
--- /dev/null
+ Adding your-face (local) to dependencies.
+ Features:
+ - eyes
+ - mouth
+ - nose
+ - optional-dependency
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn manifest_path_package() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args([
+ "--manifest-path",
+ "Cargo.toml",
+ "--package",
+ "cargo-list-test-fixture",
+ "cargo-list-test-fixture-dependency",
+ ])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn merge_activated_features() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["merge"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
--- /dev/null
+ Adding foo (workspace) to dependencies.
+ Features:
+ + default-base
+ + default-merge-base
+ + default-test-base
+ + merge
+ + merge-base
+ + test
+ + test-base
+ - unrelated
--- /dev/null
+mod add_basic;
+mod add_multiple;
+mod add_normalized_name_external;
+mod build;
+mod build_prefer_existing_version;
+mod change_rename_target;
+mod default_features;
+mod deprecated_default_features;
+mod deprecated_section;
+mod detect_workspace_inherit;
+mod detect_workspace_inherit_features;
+mod detect_workspace_inherit_optional;
+mod dev;
+mod dev_build_conflict;
+mod dev_prefer_existing_version;
+mod dry_run;
+mod features;
+mod features_empty;
+mod features_multiple_occurrences;
+mod features_preserve;
+mod features_spaced_values;
+mod features_unknown;
+mod git;
+mod git_branch;
+mod git_conflicts_namever;
+mod git_dev;
+mod git_inferred_name;
+mod git_inferred_name_multiple;
+mod git_multiple_names;
+mod git_normalized_name;
+mod git_registry;
+mod git_rev;
+mod git_tag;
+mod infer_prerelease;
+mod invalid_arg;
+mod invalid_git_external;
+mod invalid_git_name;
+mod invalid_key_inherit_dependency;
+mod invalid_key_overwrite_inherit_dependency;
+mod invalid_key_rename_inherit_dependency;
+mod invalid_manifest;
+mod invalid_name_external;
+mod invalid_path;
+mod invalid_path_name;
+mod invalid_path_self;
+mod invalid_target_empty;
+mod invalid_vers;
+mod list_features;
+mod list_features_path;
+mod list_features_path_no_default;
+mod manifest_path_package;
+mod merge_activated_features;
+mod multiple_conflicts_with_features;
+mod multiple_conflicts_with_rename;
+mod namever;
+mod no_args;
+mod no_default_features;
+mod no_optional;
+mod optional;
+mod overwrite_default_features;
+mod overwrite_default_features_with_no_default_features;
+mod overwrite_features;
+mod overwrite_git_with_path;
+mod overwrite_inherit_features_noop;
+mod overwrite_inherit_noop;
+mod overwrite_inherit_optional_noop;
+mod overwrite_inline_features;
+mod overwrite_name_dev_noop;
+mod overwrite_name_noop;
+mod overwrite_no_default_features;
+mod overwrite_no_default_features_with_default_features;
+mod overwrite_no_optional;
+mod overwrite_no_optional_with_optional;
+mod overwrite_optional;
+mod overwrite_optional_with_no_optional;
+mod overwrite_path_noop;
+mod overwrite_path_with_version;
+mod overwrite_rename_with_no_rename;
+mod overwrite_rename_with_rename;
+mod overwrite_rename_with_rename_noop;
+mod overwrite_version_with_git;
+mod overwrite_version_with_path;
+mod overwrite_with_rename;
+mod overwrite_workspace_dep;
+mod overwrite_workspace_dep_features;
+mod path;
+mod path_dev;
+mod path_inferred_name;
+mod path_inferred_name_conflicts_full_feature;
+mod path_normalized_name;
+mod preserve_sorted;
+mod preserve_unsorted;
+mod quiet;
+mod registry;
+mod rename;
+mod require_weak;
+mod target;
+mod target_cfg;
+mod unknown_inherited_feature;
+mod vers;
+mod workspace_name;
+mod workspace_path;
+mod workspace_path_dev;
+
+fn init_registry() {
+ cargo_test_support::registry::init();
+ add_registry_packages(false);
+}
+
+fn init_alt_registry() {
+ cargo_test_support::registry::alt_init();
+ add_registry_packages(true);
+}
+
+fn add_registry_packages(alt: bool) {
+ for name in [
+ "my-package",
+ "my-package1",
+ "my-package2",
+ "my-dev-package1",
+ "my-dev-package2",
+ "my-build-package1",
+ "my-build-package2",
+ "toml",
+ "versioned-package",
+ "cargo-list-test-fixture-dependency",
+ "unrelateed-crate",
+ ] {
+ cargo_test_support::registry::Package::new(name, "0.1.1+my-package")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new(name, "0.2.3+my-package")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new(name, "0.4.1+my-package")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new(name, "20.0.0+my-package")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new(name, "99999.0.0+my-package")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new(name, "99999.0.0-alpha.1+my-package")
+ .alternative(alt)
+ .publish();
+ }
+
+ cargo_test_support::registry::Package::new("prerelease_only", "0.2.0-alpha.1")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new("test_breaking", "0.2.0")
+ .alternative(alt)
+ .publish();
+ cargo_test_support::registry::Package::new("test_nonbreaking", "0.1.1")
+ .alternative(alt)
+ .publish();
+
+ // Normalization
+ cargo_test_support::registry::Package::new("linked-hash-map", "0.5.4")
+ .alternative(alt)
+ .feature("clippy", &[])
+ .feature("heapsize", &[])
+ .feature("heapsize_impl", &[])
+ .feature("nightly", &[])
+ .feature("serde", &[])
+ .feature("serde_impl", &[])
+ .feature("serde_test", &[])
+ .publish();
+ cargo_test_support::registry::Package::new("inflector", "0.11.4")
+ .alternative(alt)
+ .feature("default", &["heavyweight", "lazy_static", "regex"])
+ .feature("heavyweight", &[])
+ .feature("lazy_static", &[])
+ .feature("regex", &[])
+ .feature("unstable", &[])
+ .publish();
+
+ cargo_test_support::registry::Package::new("your-face", "99999.0.0+my-package")
+ .alternative(alt)
+ .feature("nose", &[])
+ .feature("mouth", &[])
+ .feature("eyes", &[])
+ .feature("ears", &[])
+ .publish();
+}
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn multiple_conflicts_with_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 your-face --features nose")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: feature `nose` must be qualified by the dependency its being activated for, like `my-package1/nose`, `your-face/nose`
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn multiple_conflicts_with_rename() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2 --rename renamed")
+ .current_dir(cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: cannot specify multiple crates with `--rename`
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn namever() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1@>=0.1.1 my-package2@0.2.3 my-package")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package = "99999.0.0"
+my-package1 = ">=0.1.1"
+my-package2 = "0.2.3"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 >=0.1.1 to dependencies.
+ Adding my-package2 v0.2.3 to dependencies.
+ Adding my-package v99999.0.0 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn no_args() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .current_dir(cwd)
+ .assert()
+ .code(1)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: The following required arguments were not provided:
+ <DEP_ID|--path <PATH>|--git <URI>>
+
+USAGE:
+ cargo add [OPTIONS] <DEP>[@<VERSION>] ...
+ cargo add [OPTIONS] --path <PATH> ...
+ cargo add [OPTIONS] --git <URL> ...
+
+For more information try --help
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn no_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", default-features = false }
+my-package2 = { version = "0.4.1", default-features = false }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn no_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", optional = true }
+my-package2 = { version = "0.4.1", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to optional dependencies.
+ Adding my-package2 v0.4.1 to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", default-features = true }
+my-package2 = { version = "0.4.1", default-features = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_default_features_with_no_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", default-features = false }
+my-package2 = { version = "0.4.1", default-features = false }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes"] }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --features nose")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + eyes
+ + nose
+ - ears
+ - mouth
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { git = "git://git.git", branch = "main", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_git_with_path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { optional = true, path = "../dependency", version = "0.0.0" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to optional dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+test = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_inherit_features_noop() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+test = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
--- /dev/null
+ Adding foo (workspace) to dependencies.
+ Features:
+ + test
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_inherit_noop() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
--- /dev/null
+ Adding foo (workspace) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, optional = true }
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_inherit_optional_noop() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency"}
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, optional = true }
--- /dev/null
+ Adding foo (workspace) to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "99999.0.0", features = ["eyes"] }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_inline_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line(
+ "unrelateed-crate your-face --features your-face/nose,your-face/mouth -Fyour-face/ears",
+ )
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+unrelateed-crate = "99999.0.0"
+your-face = { version = "99999.0.0", features = ["eyes", "nose", "mouth", "ears"] }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding unrelateed-crate v99999.0.0 to dependencies.
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ + ears
+ + eyes
+ + mouth
+ + nose
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_name_dev_noop() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --dev")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+ Adding your-face (local) to dev-dependencies.
+ Features:
+ + mouth
+ + nose
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_name_noop() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+ Adding your-face (local) to optional dependencies.
+ Features:
+ + mouth
+ + nose
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_no_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", default-features = false }
+my-package2 = { version = "0.4.1", default-features = false }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", default-features = false }
+my-package2 = { version = "0.4.1", default-features = false }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_no_default_features_with_default_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --default-features")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0" }
+my-package2 = { version = "0.4.1" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_no_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", optional = false }
+my-package2 = { version = "0.4.1", optional = false }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_no_optional_with_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", optional = true }
+my-package2 = { version = "0.4.1", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to optional dependencies.
+ Adding my-package2 v0.4.1 to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "0.4.1"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", optional = true }
+my-package2 = { version = "0.4.1", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to optional dependencies.
+ Adding my-package2 v0.4.1 to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[features]
+default = ["my-package1"]
+other = ["my-package1/nose"]
+
+[dependencies]
+my-package1 = { version = "99999.0.0", optional = true }
+my-package2 = { version = "0.4.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_optional_with_no_optional() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2@0.4.1 --no-optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[features]
+default = []
+other = ["my-package1/nose"]
+
+[dependencies]
+my-package1 = { version = "99999.0.0" }
+my-package2 = { version = "0.4.1" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v0.4.1 to dependencies.
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_path_noop() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --path ./dependency")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+exclude = ["dependency"]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
--- /dev/null
+[workspace]
+
+[package]
+name = "your-face"
+version = "0.0.0"
+
+[features]
+mouth = []
+nose = []
--- /dev/null
+ Adding your-face (local) to optional dependencies.
+ Features:
+ + mouth
+ + nose
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { optional = true, path = "../dependency" }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_path_with_version() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency@20.0")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { optional = true, version = "20.0" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding cargo-list-test-fixture-dependency v20.0 to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_rename_with_no_rename() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("versioned-package")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+versioned-package = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding versioned-package v99999.0.0 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_rename_with_rename() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("versioned-package --rename a2")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
+a2 = { version = "99999.0.0", package = "versioned-package" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding versioned-package v99999.0.0 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_rename_with_rename_noop() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("versioned-package --rename a1")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+a1 = { package = "versioned-package", version = "0.1.1", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding versioned-package v0.1.1 to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+versioned-package = { version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_version_with_git() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+ let git_dep = cargo_test_support::git::new("versioned-package", |project| {
+ project
+ .file(
+ "Cargo.toml",
+ &cargo_test_support::basic_manifest("versioned-package", "0.3.0+versioned-package"),
+ )
+ .file("src/lib.rs", "")
+ });
+ let git_url = git_dep.url().to_string();
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .args(["versioned-package", "--git", &git_url])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+versioned-package = { version = "0.3.0", optional = true, git = "[ROOTURL]/versioned-package" }
--- /dev/null
+ Updating git repository `[ROOTURL]/versioned-package`
+ Adding versioned-package (git) to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_version_with_path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", optional = true, path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to optional dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+versioned-package = { version = "0.1.1", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_with_rename() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("versioned-package --rename renamed")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+renamed = { version = "99999.0.0", package = "versioned-package" }
+versioned-package = { version = "0.1.1", optional = true }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding versioned-package v99999.0.0 to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo.workspace = true
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_workspace_dep() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "--path", "./dependency", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding foo (local) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn overwrite_workspace_dep_features() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "--path", "./dependency", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency" }
\ No newline at end of file
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { features = ["test"], path = "../dependency", version = "0.0.0" }
--- /dev/null
+ Adding foo (local) to dependencies.
+ Features:
+ + default-base
+ + default-merge-base
+ + default-test-base
+ + test
+ + test-base
+ - merge
+ - merge-base
+ - unrelated
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn path_dev() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency --dev")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+cargo-list-test-fixture-dependency = { path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn path_inferred_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "optional-dep"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn path_inferred_name_conflicts_full_feature() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("--path ../dependency --features your-face/nose")
+ .current_dir(&cwd)
+ .assert()
+ .code(101)
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency", "optional"]
--- /dev/null
+[package]
+name = "your-face"
+version = "0.1.3"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+optional-dependency = { path = "../optional", optional = true }
+
+[features]
+default = ["mouth"]
+nose = []
+mouth = ["nose"]
+eyes = []
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: `your-face/nose` is unsupported when inferring the crate name, use `nose`
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn path_normalized_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo_list_test_fixture_dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .failure() // Fuzzy searching for paths isn't supported at this time
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+error: the crate `cargo_list_test_fixture_dependency@[ROOT]/case/dependency` could not be found at `[ROOT]/case/dependency`
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+atty = "0.2.13"
+toml_edit = "0.1.5"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn preserve_sorted() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("toml")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+atty = "0.2.13"
+toml = "99999.0.0"
+toml_edit = "0.1.5"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding toml v99999.0.0 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn preserve_unsorted() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("toml")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+toml_edit = "0.1.5"
+atty = "0.2.13"
+toml = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding toml v99999.0.0 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn quiet() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("--quiet your-face")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+your-face = "99999.0.0"
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_alt_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn registry() {
+ init_alt_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2 --registry alternative")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package1 = { version = "99999.0.0", registry = "alternative" }
+my-package2 = { version = "99999.0.0", registry = "alternative" }
--- /dev/null
+ Updating `alternative` index
+ Adding my-package1 v99999.0.0 to dependencies.
+ Adding my-package2 v99999.0.0 to dependencies.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn rename() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package --rename renamed")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+renamed = { version = "99999.0.0", package = "my-package" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package v99999.0.0 to dependencies.
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[features]
+eyes = ["your-face?/eyes"]
+
+[dependencies]
+your-face = { version = "99999.0.0", optional = true }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn require_weak() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("your-face --no-optional")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[features]
+eyes = ["your-face/eyes"]
+
+[dependencies]
+your-face = { version = "99999.0.0" }
--- /dev/null
+ Updating `dummy-registry` index
+ Adding your-face v99999.0.0 to dependencies.
+ Features:
+ - ears
+ - eyes
+ - mouth
+ - nose
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn target() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2 --target i686-unknown-linux-gnu")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[target.i686-unknown-linux-gnu.dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies for target `i686-unknown-linux-gnu`.
+ Adding my-package2 v99999.0.0 to dependencies for target `i686-unknown-linux-gnu`.
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn target_cfg() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package1 my-package2 --target cfg(unix)")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[target."cfg(unix)".dependencies]
+my-package1 = "99999.0.0"
+my-package2 = "99999.0.0"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package1 v99999.0.0 to dependencies for target `cfg(unix)`.
+ Adding my-package2 v99999.0.0 to dependencies for target `cfg(unix)`.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["not_recognized"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn unknown_inherited_feature() {
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .masquerade_as_nightly_cargo()
+ .arg("add")
+ .args(["foo", "-p", "bar"])
+ .current_dir(cwd)
+ .assert()
+ .failure()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
+
+[workspace.dependencies]
+foo = { version = "0.0.0", path = "./dependency", features = ["not_recognized"] }
--- /dev/null
+[package]
+name = "foo"
+version = "0.0.0"
+
+[features]
+default-base = []
+default-test-base = []
+default-merge-base = []
+default = ["default-base", "default-test-base", "default-merge-base"]
+test-base = []
+test = ["test-base", "default-test-base"]
+merge-base = []
+merge = ["merge-base", "default-merge-base"]
+unrelated = []
\ No newline at end of file
--- /dev/null
+cargo-features = ["workspace-inheritance"]
+
+[package]
+name = "bar"
+version = "0.0.0"
+
+[dependencies]
+foo = { workspace = true, features = ["test"] }
--- /dev/null
+ Adding foo (workspace) to dependencies.
+ Features:
+ + default-base
+ + default-merge-base
+ + default-test-base
+ + not_recognized
+ + test
+ + test-base
+ - merge
+ - merge-base
+ - unrelated
+error: unrecognized features: ["not_recognized"]
--- /dev/null
+../add-basic.in
\ No newline at end of file
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn vers() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("my-package@>=0.1.1")
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+my-package = ">=0.1.1"
--- /dev/null
+ Updating `dummy-registry` index
+ Adding my-package >=0.1.1 to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn workspace_name() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn workspace_path() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+cargo-list-test-fixture-dependency = { version = "0.0.0", path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dependencies.
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
--- /dev/null
+use cargo_test_support::compare::assert;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use crate::cargo_add::init_registry;
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn workspace_path_dev() {
+ init_registry();
+ let project = Project::from_template(curr_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = project_root.join("primary");
+
+ snapbox::cmd::Command::cargo()
+ .arg("add")
+ .arg_line("cargo-list-test-fixture-dependency --path ../dependency --dev")
+ .current_dir(&cwd)
+ .assert()
+ .success()
+ .stdout_matches_path(curr_dir!().join("stdout.log"))
+ .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+ assert().subset_matches(curr_dir!().join("out"), &project_root);
+}
--- /dev/null
+[workspace]
+members = ["primary", "dependency"]
--- /dev/null
+[package]
+name = "cargo-list-test-fixture-dependency"
+version = "0.0.0"
--- /dev/null
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dev-dependencies]
+cargo-list-test-fixture-dependency = { path = "../dependency" }
--- /dev/null
+ Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.