| use cargo_test_support::basic_manifest; |
| use cargo_test_support::compare::assert_ui; |
| use cargo_test_support::curr_dir; |
| use cargo_test_support::git; |
| use cargo_test_support::project; |
| use cargo_test_support::CargoCommand; |
| |
| #[cargo_test] |
| fn case() { |
| cargo_test_support::registry::init(); |
| |
| let git_project1 = git::new("bar1", |project| { |
| project |
| .file("Cargo.toml", &basic_manifest("bar", "0.1.0")) |
| .file("src/lib.rs", "") |
| }) |
| .url(); |
| |
| let git_project2 = git::new("bar2", |project| { |
| project |
| .file("Cargo.toml", &basic_manifest("bar", "0.1.0")) |
| .file("src/lib.rs", "") |
| }) |
| .url(); |
| |
| let git_project3 = git::new("bar3", |project| { |
| project |
| .file("Cargo.toml", &basic_manifest("bar", "0.1.0")) |
| .file("src/lib.rs", "") |
| }) |
| .url(); |
| |
| let in_project = project() |
| .file( |
| "Cargo.toml", |
| &format!( |
| "[workspace]\n\ |
| members = [ \"my-member\" ]\n\ |
| \n\ |
| [package]\n\ |
| name = \"my-project\"\n\ |
| version = \"0.1.0\"\n\ |
| \n\ |
| [dependencies]\n\ |
| bar = {{ git = \"{git_project1}\" }}\n\ |
| \n\ |
| [patch.\"{git_project1}\"]\n\ |
| bar = {{ git = \"{git_project3}\" }}\n\ |
| \n\ |
| [patch.crates-io]\n\ |
| bar = {{ git = \"{git_project2}\" }}\n", |
| ), |
| ) |
| .file("src/lib.rs", "") |
| .file( |
| "my-member/Cargo.toml", |
| "[package]\n\ |
| name = \"my-member\"\n\ |
| version = \"0.1.0\"\n\ |
| \n\ |
| [dependencies]\n\ |
| bar = \"0.1.0\"\n", |
| ) |
| .file("my-member/src/lib.rs", "") |
| .build(); |
| |
| snapbox::cmd::Command::cargo_ui() |
| .arg("remove") |
| .args(["bar"]) |
| .current_dir(&in_project.root()) |
| .assert() |
| .success() |
| .stdout_matches_path(curr_dir!().join("stdout.log")) |
| .stderr_matches_path(curr_dir!().join("stderr.log")); |
| |
| assert_ui().subset_matches(curr_dir!().join("out"), &in_project.root()); |
| } |