From aad9f369e1ab66ef201dbb7367e459bcbfbb2eb8 Mon Sep 17 00:00:00 2001 From: Skgland Date: Mon, 7 Sep 2020 12:08:01 +0200 Subject: [PATCH 1/4] add workspace test --- tests/buildtest/crates/workspace/Cargo.toml | 2 ++ tests/buildtest/crates/workspace/world/Cargo.toml | 9 +++++++++ .../buildtest/crates/workspace/world/src/main.rs | 3 +++ tests/buildtest/mod.rs | 15 +++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 tests/buildtest/crates/workspace/Cargo.toml create mode 100644 tests/buildtest/crates/workspace/world/Cargo.toml create mode 100644 tests/buildtest/crates/workspace/world/src/main.rs diff --git a/tests/buildtest/crates/workspace/Cargo.toml b/tests/buildtest/crates/workspace/Cargo.toml new file mode 100644 index 0000000..fd9cf16 --- /dev/null +++ b/tests/buildtest/crates/workspace/Cargo.toml @@ -0,0 +1,2 @@ +[workspace] +members = ["world"] \ No newline at end of file diff --git a/tests/buildtest/crates/workspace/world/Cargo.toml b/tests/buildtest/crates/workspace/world/Cargo.toml new file mode 100644 index 0000000..5e9837b --- /dev/null +++ b/tests/buildtest/crates/workspace/world/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "world" +version = "0.1.0" +authors = ["Skgland "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/tests/buildtest/crates/workspace/world/src/main.rs b/tests/buildtest/crates/workspace/world/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/tests/buildtest/crates/workspace/world/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/tests/buildtest/mod.rs b/tests/buildtest/mod.rs index 2c52235..88dc4f5 100644 --- a/tests/buildtest/mod.rs +++ b/tests/buildtest/mod.rs @@ -97,6 +97,21 @@ fn test_cargo_config() { }); } +#[test] +fn workspace() { + runner::run("workspace", |run| { + run.build(SandboxBuilder::new().enable_networking(false), |build| { + let storage = rustwide::logging::LogStorage::new(LevelFilter::Info); + rustwide::logging::capture(&storage, || -> Result<_, Error> { + build.cargo().args(&["run"]).run()?; + Ok(()) + })?; + Ok(()) + })?; + Ok(()) + }); +} + test_prepare_error!( test_missing_cargotoml, "missing-cargotoml", From e08cb8dd12992fc2b7a7611df7e26293e2fcad86 Mon Sep 17 00:00:00 2001 From: Skgland Date: Mon, 7 Sep 2020 12:09:52 +0200 Subject: [PATCH 2/4] replace read-manifest by metadata and no longer remove workspace table --- src/prepare.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/prepare.rs b/src/prepare.rs index 08bd6e3..de41a48 100644 --- a/src/prepare.rs +++ b/src/prepare.rs @@ -59,7 +59,7 @@ impl<'a> Prepare<'a> { } let res = Command::new(self.workspace, self.toolchain.cargo()) - .args(&["read-manifest", "--manifest-path", "Cargo.toml"]) + .args(&["metadata", "--manifest-path", "Cargo.toml", "--no-deps"]) .cd(self.source_dir) .log_output(false) .run(); @@ -196,7 +196,7 @@ impl<'a> TomlTweaker<'a> { self.remove_missing_items("example"); self.remove_missing_items("test"); - self.remove_workspaces(); + self.remove_parent_workspaces(); self.remove_unwanted_cargo_features(); self.remove_dependencies(); self.apply_patches(); @@ -237,13 +237,9 @@ impl<'a> TomlTweaker<'a> { } } - fn remove_workspaces(&mut self) { + fn remove_parent_workspaces(&mut self) { let krate = self.krate.to_string(); - if self.table.remove("workspace").is_some() { - info!("removed workspace from {}", krate); - } - // Eliminate parent workspaces if let Some(&mut Value::Table(ref mut package)) = self.table.get_mut("package") { if package.remove("workspace").is_some() { @@ -467,6 +463,9 @@ mod tests { [target."cfg(unix)".dependencies] quux = { version = "1.0" } + + [workspace] + members = [] }; let krate = Crate::local("/dev/null".as_ref()); From 85ae38389da5d7d75182264429741360c38a2ae0 Mon Sep 17 00:00:00 2001 From: Skgland Date: Mon, 7 Sep 2020 13:01:29 +0200 Subject: [PATCH 3/4] rename workspace test to match other buildtest tests --- .../crates/{workspace => cargo-workspace}/Cargo.toml | 0 .../crates/{workspace => cargo-workspace}/world/Cargo.toml | 0 .../crates/{workspace => cargo-workspace}/world/src/main.rs | 0 tests/buildtest/mod.rs | 4 ++-- 4 files changed, 2 insertions(+), 2 deletions(-) rename tests/buildtest/crates/{workspace => cargo-workspace}/Cargo.toml (100%) rename tests/buildtest/crates/{workspace => cargo-workspace}/world/Cargo.toml (100%) rename tests/buildtest/crates/{workspace => cargo-workspace}/world/src/main.rs (100%) diff --git a/tests/buildtest/crates/workspace/Cargo.toml b/tests/buildtest/crates/cargo-workspace/Cargo.toml similarity index 100% rename from tests/buildtest/crates/workspace/Cargo.toml rename to tests/buildtest/crates/cargo-workspace/Cargo.toml diff --git a/tests/buildtest/crates/workspace/world/Cargo.toml b/tests/buildtest/crates/cargo-workspace/world/Cargo.toml similarity index 100% rename from tests/buildtest/crates/workspace/world/Cargo.toml rename to tests/buildtest/crates/cargo-workspace/world/Cargo.toml diff --git a/tests/buildtest/crates/workspace/world/src/main.rs b/tests/buildtest/crates/cargo-workspace/world/src/main.rs similarity index 100% rename from tests/buildtest/crates/workspace/world/src/main.rs rename to tests/buildtest/crates/cargo-workspace/world/src/main.rs diff --git a/tests/buildtest/mod.rs b/tests/buildtest/mod.rs index 88dc4f5..a76fa8a 100644 --- a/tests/buildtest/mod.rs +++ b/tests/buildtest/mod.rs @@ -98,8 +98,8 @@ fn test_cargo_config() { } #[test] -fn workspace() { - runner::run("workspace", |run| { +fn test_cargo_workspace() { + runner::run("cargo-workspace", |run| { run.build(SandboxBuilder::new().enable_networking(false), |build| { let storage = rustwide::logging::LogStorage::new(LevelFilter::Info); rustwide::logging::capture(&storage, || -> Result<_, Error> { From 1b1d39e19f359d790c5e97365f63adbd1c8851f3 Mon Sep 17 00:00:00 2001 From: Skgland Date: Mon, 7 Sep 2020 14:59:43 +0200 Subject: [PATCH 4/4] add change log entry --- CHANGELOG.md | 6 ++++++ tests/buildtest/crates/cargo-workspace/Cargo.lock | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 tests/buildtest/crates/cargo-workspace/Cargo.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index 678acf7..8970090 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- allow workspaces by having validate_manifest now use `metadata --no-deps` instead of deprecated `read-manifest` + therefor no longer failing on workspaces and TomlTweaker no longer removing the workspace table from `Cargo.toml` + + ## [0.10.0] - 2020-08-08 ### Added diff --git a/tests/buildtest/crates/cargo-workspace/Cargo.lock b/tests/buildtest/crates/cargo-workspace/Cargo.lock new file mode 100644 index 0000000..8bda135 --- /dev/null +++ b/tests/buildtest/crates/cargo-workspace/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "world" +version = "0.1.0"