From 3a04d70473bf6643565084f083269dbe3d2c8761 Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Thu, 2 May 2024 22:02:16 -0500 Subject: [PATCH 1/7] draft of updating warg with federation --- Cargo.lock | 142 +++++++++++++++++++++++--------- Cargo.toml | 10 +-- crates/core/src/registry.rs | 15 ++-- crates/wit/src/lib.rs | 3 +- crates/wit/tests/support/mod.rs | 2 + src/lib.rs | 3 +- tests/support/mod.rs | 2 + 7 files changed, 120 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8630cf70..e7ae0f0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -753,6 +753,19 @@ dependencies = [ "yaml-rust", ] +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static 1.4.0", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -879,6 +892,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror", + "zeroize", +] + [[package]] name = "difflib" version = "0.4.0" @@ -984,6 +1010,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "encoding_rs" version = "0.8.34" @@ -1856,7 +1888,16 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c000ca4d908ff18ac99b93a062cb8958d331c3220719c52e77cb19cc6ac5d2c1" dependencies = [ - "logos-derive", + "logos-derive 0.13.0", +] + +[[package]] +name = "logos" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161971eb88a0da7ae0c333e1063467c5b5727e7fb6b710b8db4814eade3a42e8" +dependencies = [ + "logos-derive 0.14.0", ] [[package]] @@ -1873,13 +1914,37 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "logos-codegen" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e31badd9de5131fdf4921f6473d457e3dd85b11b7f091ceb50e4df7c3eeb12a" +dependencies = [ + "beef", + "fnv", + "lazy_static 1.4.0", + "proc-macro2", + "quote", + "regex-syntax 0.8.3", + "syn 2.0.58", +] + [[package]] name = "logos-derive" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbfc0d229f1f42d790440136d941afd806bc9e949e2bcb8faa813b0f00d1267e" dependencies = [ - "logos-codegen", + "logos-codegen 0.13.0", +] + +[[package]] +name = "logos-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c2a69b3eb68d5bd595107c9ee58d7e07fe2bb5e360cc85b0f084dedac80de0a" +dependencies = [ + "logos-codegen 0.14.0", ] [[package]] @@ -1914,21 +1979,21 @@ dependencies = [ [[package]] name = "miette" -version = "5.10.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" +checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" dependencies = [ + "cfg-if", "miette-derive", - "once_cell", "thiserror", "unicode-width", ] [[package]] name = "miette-derive" -version = "5.10.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" +checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", @@ -2586,11 +2651,11 @@ dependencies = [ [[package]] name = "prost-reflect" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057237efdb71cf4b3f9396302a3d6599a92fa94063ba537b66130980ea9909f3" +checksum = "6f5eec97d5d34bdd17ad2db2219aabf46b054c6c41bd5529767c9ce55be5898f" dependencies = [ - "logos", + "logos 0.14.0", "miette", "once_cell", "prost", @@ -2608,9 +2673,9 @@ dependencies = [ [[package]] name = "protox" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bb76c5f6221de491fe2c8f39b106330bbd9762c6511119c07940e10eb9ff11" +checksum = "a29b3c5596eb23a849deba860b53ffd468199d9ad5fe4402a7d55379e16aa2d2" dependencies = [ "bytes", "miette", @@ -2623,11 +2688,11 @@ dependencies = [ [[package]] name = "protox-parse" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4581f441c58863525a3e6bec7b8de98188cf75239a56c725a3e7288450a33f" +checksum = "033b939d76d358f7c32120c86c71f515bae45e64f2bde455200356557276276c" dependencies = [ - "logos", + "logos 0.13.0", "miette", "prost-types", "thiserror", @@ -3177,6 +3242,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -3819,9 +3890,8 @@ dependencies = [ [[package]] name = "warg-api" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bf1e22e1e396b98a2181219b06d1a49a3478c1b9d87a29cd9cd819d714e6c3" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "indexmap 2.2.6", "itertools 0.12.1", @@ -3834,15 +3904,15 @@ dependencies = [ [[package]] name = "warg-client" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56cfaf9781ca2d084468bbdd8bbc1e35947bb2a19f8d3940d899852f6dd78aa" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "async-recursion", "async-trait", "bytes", "clap", + "dialoguer", "dirs", "futures-util", "indexmap 2.2.6", @@ -3878,9 +3948,8 @@ dependencies = [ [[package]] name = "warg-credentials" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626224ba1a00965282b669d2611654fd6292a15396ed8c850ce91684678fe19f" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "indexmap 2.2.6", @@ -3892,9 +3961,8 @@ dependencies = [ [[package]] name = "warg-crypto" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a8c47e96a7f1903931b34db9a1f0d22bcb3761a203ee6861db686daaedcb4b" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "base64", @@ -3913,9 +3981,8 @@ dependencies = [ [[package]] name = "warg-protobuf" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceed0e698efd0fab8bb747efd452156a65149eb389f7fe2a6b6b3ced4e25ab24" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "pbjson", @@ -3932,9 +3999,8 @@ dependencies = [ [[package]] name = "warg-protocol" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69be98a2e9e0aeace7cbd62184b11462d259c5e391e6208d59506c9a2d33571c" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "base64", @@ -3955,9 +4021,8 @@ dependencies = [ [[package]] name = "warg-server" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f15457ced83df5c2298f225fc83b6700e93c7bf320a2e4ef01114c0b34d7ce" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "axum", @@ -3986,9 +4051,8 @@ dependencies = [ [[package]] name = "warg-transparency" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d272b3002b9e5f6f636817089ba091e1ba7b85858e72529f96e24bc9827f530" +version = "0.5.0-dev" +source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" dependencies = [ "anyhow", "indexmap 2.2.6", diff --git a/Cargo.toml b/Cargo.toml index 5604333a..34b5b046 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,11 +69,11 @@ members = ["crates/core", "crates/wit"] [workspace.dependencies] cargo-component-core = { path = "crates/core", version = "0.11.0" } -warg-protocol = "0.4.1" -warg-crypto = "0.4.1" -warg-client = "0.4.1" -warg-credentials = "0.4.1" -warg-server = "0.4.1" +warg-protocol = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } +warg-crypto = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } +warg-client = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } +warg-credentials = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } +warg-server = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } anyhow = "1.0.82" clap = { version = "4.5.4", features = ["derive"] } toml_edit = { version = "0.22.9", features = ["serde"] } diff --git a/crates/core/src/registry.rs b/crates/core/src/registry.rs index 5879d9bf..a00c37e2 100644 --- a/crates/core/src/registry.rs +++ b/crates/core/src/registry.rs @@ -23,7 +23,7 @@ use std::{ }; use url::Url; use warg_client::{ - storage::{ContentStorage, PackageInfo, RegistryStorage}, + storage::{ContentStorage, PackageInfo}, Config, FileSystemClient, RegistryUrl, StorageLockResult, }; use warg_credentials::keyring::get_auth_token; @@ -591,7 +591,7 @@ impl<'a> DependencyResolver<'a> { let client = registry.client.clone(); futures.push(tokio::spawn(async move { - (index, client.upsert(upserts.iter()).await) + (index, client.fetch_packages(upserts.iter()).await) })) } @@ -877,13 +877,10 @@ impl<'a> Registry<'a> { ) -> Result> { match packages.entry(name) { hash_map::Entry::Occupied(e) => Ok(Some(e.into_mut())), - hash_map::Entry::Vacant(e) => match client - .registry() - .load_package(client.get_warg_registry(), e.key()) - .await? - { - Some(p) => Ok(Some(e.insert(p))), - None => Ok(None), + hash_map::Entry::Vacant(e) => match client.package(e.key()).await { + Ok(p) => Ok(Some(e.insert(p))), + Err(warg_client::ClientError::PackageDoesNotExist { .. }) => Ok(None), + Err(err) => Err(err.into()), }, } } diff --git a/crates/wit/src/lib.rs b/crates/wit/src/lib.rs index 37d1dad8..300052de 100644 --- a/crates/wit/src/lib.rs +++ b/crates/wit/src/lib.rs @@ -328,8 +328,7 @@ async fn publish_wit_package(options: PublishOptions<'_>, terminal: &Terminal) - let bytes = add_registry_metadata(options.config, &bytes)?; let name = options.package.unwrap_or(&name); - let mut client = create_client(options.warg_config, options.url, terminal)?; - client.refresh_namespace(name.namespace()).await?; + let client = create_client(options.warg_config, options.url, terminal)?; let content = client .content() diff --git a/crates/wit/tests/support/mod.rs b/crates/wit/tests/support/mod.rs index 696c2f99..d3c92afa 100644 --- a/crates/wit/tests/support/mod.rs +++ b/crates/wit/tests/support/mod.rs @@ -118,6 +118,8 @@ pub async fn spawn_server(root: &Path) -> Result<(ServerInstance, warg_client::C namespace_map_path: Some(root.join("namespaces")), keys: IndexSet::new(), keyring_auth: false, + ignore_federation_hints: false, + auto_accept_federation_hints: false, }; Ok((instance, config)) diff --git a/src/lib.rs b/src/lib.rs index 9148fe70..ec959619 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1095,8 +1095,7 @@ pub async fn publish(config: &Config, options: &PublishOptions<'_>) -> Result<() return Ok(()); } - let mut client = create_client(config.warg(), options.registry_url, config.terminal())?; - client.refresh_namespace(options.name.namespace()).await?; + let client = create_client(config.warg(), options.registry_url, config.terminal())?; let bytes = fs::read(options.path).with_context(|| { format!( diff --git a/tests/support/mod.rs b/tests/support/mod.rs index e92d8b74..75c00c1b 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -194,6 +194,8 @@ pub async fn spawn_server(root: &Path) -> Result<(ServerInstance, warg_client::C namespace_map_path: Some(root.join("namespaces")), keys: IndexSet::new(), keyring_auth: false, + ignore_federation_hints: false, + auto_accept_federation_hints: false, }; Ok((instance, config)) From 1b36a7d7ddfdb449fbf6e9f8ad203101d5c3368f Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 10:01:10 -0500 Subject: [PATCH 2/7] updated warg dep; fixed test assertion --- Cargo.lock | 16 ++++++++-------- Cargo.toml | 10 +++++----- crates/wit/tests/support/mod.rs | 1 + tests/publish.rs | 4 +++- tests/support/mod.rs | 1 + 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e7ae0f0f..cf96bed4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3891,7 +3891,7 @@ dependencies = [ [[package]] name = "warg-api" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "indexmap 2.2.6", "itertools 0.12.1", @@ -3905,7 +3905,7 @@ dependencies = [ [[package]] name = "warg-client" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "async-recursion", @@ -3949,7 +3949,7 @@ dependencies = [ [[package]] name = "warg-credentials" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "indexmap 2.2.6", @@ -3962,7 +3962,7 @@ dependencies = [ [[package]] name = "warg-crypto" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "base64", @@ -3982,7 +3982,7 @@ dependencies = [ [[package]] name = "warg-protobuf" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "pbjson", @@ -4000,7 +4000,7 @@ dependencies = [ [[package]] name = "warg-protocol" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "base64", @@ -4022,7 +4022,7 @@ dependencies = [ [[package]] name = "warg-server" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "axum", @@ -4052,7 +4052,7 @@ dependencies = [ [[package]] name = "warg-transparency" version = "0.5.0-dev" -source = "git+https://github.com/bytecodealliance/registry?rev=ac901b9#ac901b93ea5ae3aec9b23a50136670bc0e07c1b8" +source = "git+https://github.com/calvinrp/bytecodealliance-registry?rev=3eb6368#3eb63685df8f485d84ffefb35216e387ea31eab7" dependencies = [ "anyhow", "indexmap 2.2.6", diff --git a/Cargo.toml b/Cargo.toml index 34b5b046..cdd0bde4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,11 +69,11 @@ members = ["crates/core", "crates/wit"] [workspace.dependencies] cargo-component-core = { path = "crates/core", version = "0.11.0" } -warg-protocol = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } -warg-crypto = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } -warg-client = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } -warg-credentials = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } -warg-server = { git = "https://github.com/bytecodealliance/registry", rev = "ac901b9" } +warg-protocol = { git = "https://github.com/calvinrp/bytecodealliance-registry", rev = "3eb6368" } +warg-crypto = { git = "https://github.com/calvinrp/bytecodealliance-registry", rev = "3eb6368" } +warg-client = { git = "https://github.com/calvinrp/bytecodealliance-registry", rev = "3eb6368" } +warg-credentials = { git = "https://github.com/calvinrp/bytecodealliance-registry", rev = "3eb6368" } +warg-server = { git = "https://github.com/calvinrp/bytecodealliance-registry", rev = "3eb6368" } anyhow = "1.0.82" clap = { version = "4.5.4", features = ["derive"] } toml_edit = { version = "0.22.9", features = ["serde"] } diff --git a/crates/wit/tests/support/mod.rs b/crates/wit/tests/support/mod.rs index d3c92afa..2e54df4c 100644 --- a/crates/wit/tests/support/mod.rs +++ b/crates/wit/tests/support/mod.rs @@ -120,6 +120,7 @@ pub async fn spawn_server(root: &Path) -> Result<(ServerInstance, warg_client::C keyring_auth: false, ignore_federation_hints: false, auto_accept_federation_hints: false, + disable_dialoguer: true, }; Ok((instance, config)) diff --git a/tests/publish.rs b/tests/publish.rs index b8c05645..95309b3f 100644 --- a/tests/publish.rs +++ b/tests/publish.rs @@ -90,7 +90,9 @@ world foo { .cargo_component("publish") .env("CARGO_COMPONENT_PUBLISH_KEY", test_signing_key()) .assert() - .stderr(contains("error: package `test:foo` does not exist")) + .stderr(contains( + "package `test:foo` must be initialized before publishing", + )) .failure(); Ok(()) diff --git a/tests/support/mod.rs b/tests/support/mod.rs index 75c00c1b..d8e16362 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -196,6 +196,7 @@ pub async fn spawn_server(root: &Path) -> Result<(ServerInstance, warg_client::C keyring_auth: false, ignore_federation_hints: false, auto_accept_federation_hints: false, + disable_dialoguer: true, }; Ok((instance, config)) From 58c9f1566590d37abb403279c8d90e5bfd27387e Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 11:19:56 -0500 Subject: [PATCH 3/7] attempting fix for test temp directory conflicts --- tests/build.rs | 100 +++++++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 40 deletions(-) diff --git a/tests/build.rs b/tests/build.rs index 2999b9bd..1a7b1f6e 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -10,7 +10,8 @@ mod support; #[test] fn it_builds_debug() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_debug"; + let project = Project::new(name)?; project .cargo_component("build") @@ -18,7 +19,7 @@ fn it_builds_debug() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; // A lock file should only be generated for projects with // registry dependencies @@ -29,7 +30,8 @@ fn it_builds_debug() -> Result<()> { #[test] fn it_builds_a_bin_project_with_snake_case() -> Result<()> { - let project = Project::new_bin("hello_world")?; + let name = "hello_world"; + let project = Project::new_bin(name)?; project .cargo_component("build --release") @@ -37,14 +39,15 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("hello_world"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } #[test] fn it_builds_a_bin_project() -> Result<()> { - let project = Project::new_bin("foo")?; + let name = "foo_bin_project"; + let project = Project::new_bin(name)?; project .cargo_component("build --release") @@ -52,7 +55,7 @@ fn it_builds_a_bin_project() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("foo"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } @@ -112,7 +115,8 @@ edition = "2021" #[test] fn it_supports_wit_keywords() -> Result<()> { - let project = Project::new("interface")?; + let name = "interface"; + let project = Project::new(name)?; project .cargo_component("build --release") @@ -120,14 +124,15 @@ fn it_supports_wit_keywords() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("interface"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } #[test] fn it_adds_a_producers_field() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_producer_section"; + let project = Project::new(name)?; project .cargo_component("build --release") @@ -135,7 +140,7 @@ fn it_adds_a_producers_field() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - let path = project.release_wasm("foo"); + let path = project.release_wasm(name); validate_component(&path)?; @@ -157,7 +162,8 @@ fn it_adds_a_producers_field() -> Result<()> { #[test] fn it_builds_wasm32_unknown_unknown() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_wasm32_unknown_unknown"; + let project = Project::new(name)?; project .cargo_component("build --target wasm32-unknown-unknown") @@ -170,7 +176,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { .build_dir() .join("wasm32-unknown-unknown") .join("debug") - .join("foo.wasm"), + .join(format!("{name}.wasm")), )?; Ok(()) @@ -178,7 +184,8 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { #[test] fn it_regenerates_target_if_wit_changed() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_if_wit_changed"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["target"]["world"] = value("example"); Ok(doc) @@ -190,7 +197,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; project .cargo_component("build") @@ -211,7 +218,8 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { #[test] fn it_builds_with_local_wit_deps() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_local_wit_deps"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { let mut dependencies = Table::new(); dependencies["foo:bar"]["path"] = value("wit/deps/foo-bar"); @@ -296,14 +304,15 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn empty_world_with_dep_valid() -> Result<()> { - let project = Project::new("dep")?; + let name = "dep"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -340,7 +349,7 @@ fn empty_world_with_dep_valid() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("dep"); + let dep = project.debug_wasm(name); validate_component(&dep)?; let project = Project::with_dir(project.dir().clone(), "main", "")?; @@ -379,7 +388,8 @@ fn empty_world_with_dep_valid() -> Result<()> { #[test] fn it_builds_with_resources() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_resources"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -439,7 +449,7 @@ fn it_builds_with_resources() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -447,7 +457,8 @@ fn it_builds_with_resources() -> Result<()> { #[test] fn it_builds_resources_with_specified_ownership_model() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_resources_with_specified_ownership_model"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["ownership"] = value("borrowing-duplicate-if-necessary"); @@ -512,7 +523,7 @@ fn it_builds_resources_with_specified_ownership_model() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -638,7 +649,8 @@ bindings::export!(Component with_types_in bindings); #[test] fn it_builds_with_adapter() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_with_adapter"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value("not-a-valid-path"); Ok(doc) @@ -650,7 +662,7 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("error: failed to read module adapter")) .failure(); - let project = Project::new("foo")?; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path().to_str().unwrap()); @@ -663,20 +675,22 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_errors_if_adapter_is_not_wasm() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_errors_on_adapter"; + let file_name = format!("{name}.wasm"); + let project = Project::new(name)?; project.update_manifest(|mut doc| { - doc["package"]["metadata"]["component"]["adapter"] = value("foo.wasm"); + doc["package"]["metadata"]["component"]["adapter"] = value(&file_name); Ok(doc) })?; - fs::write(project.root().join("foo.wasm"), "not wasm")?; + fs::write(project.root().join(file_name), "not wasm")?; project .cargo_component("build") @@ -689,7 +703,8 @@ fn it_errors_if_adapter_is_not_wasm() -> Result<()> { #[test] fn it_adds_additional_derives() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_add_derives"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["derives"] = value(Array::from_iter(["serde::Serialize", "serde::Deserialize"])); @@ -754,14 +769,15 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_builds_with_versioned_wit() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_versioned_wit"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -796,7 +812,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -804,7 +820,8 @@ fn it_builds_with_versioned_wit() -> Result<()> { #[test] fn it_warns_on_proxy_setting_for_command() -> Result<()> { - let project = Project::new_bin("foo")?; + let name = "foo_warn_proxy"; + let project = Project::new_bin(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); Ok(doc) @@ -818,14 +835,15 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { )) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_warn_proxy_and_adapter"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); doc["package"]["metadata"]["component"]["adapter"] = @@ -839,15 +857,16 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { .stderr(contains("warning: ignoring `proxy` setting due to `adapter` setting being present in `Cargo.toml`")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_builds_with_proxy_adapter() -> Result<()> { + let name = "foo_proxy"; let dir = Rc::new(TempDir::new()?); - let project = Project::with_dir(dir.clone(), "foo", "--proxy")?; + let project = Project::with_dir(dir.clone(), name, "--proxy")?; project .cargo_component("build") @@ -855,9 +874,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; - let text = wasmprinter::print_file(project.debug_wasm("foo"))?; + let text = wasmprinter::print_file(project.debug_wasm(name))?; assert!( !text.contains("wasi:cli/environment"), "proxy wasm should have no reference to `wasi:cli/environment`" @@ -868,9 +887,10 @@ fn it_builds_with_proxy_adapter() -> Result<()> { #[test] fn it_does_not_generate_bindings_for_cargo_projects() -> Result<()> { + let name = "foo_not_generate"; let dir = TempDir::new()?; - for (name, args) in [("foo", &["new", "--lib"] as &[_]), ("bar", &["new"])] { + for (name, args) in [(name, &["new", "--lib"] as &[_]), ("bar", &["new"])] { let mut cmd = Command::new("cargo"); cmd.current_dir(dir.path()); cmd.args(args); From c5f0205f69b3abf2cba4ff35dd5ff850eec6e400 Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 11:35:10 -0500 Subject: [PATCH 4/7] Revert "attempting fix for test temp directory conflicts" This reverts commit 58c9f1566590d37abb403279c8d90e5bfd27387e. --- tests/build.rs | 100 ++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 60 deletions(-) diff --git a/tests/build.rs b/tests/build.rs index 1a7b1f6e..2999b9bd 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -10,8 +10,7 @@ mod support; #[test] fn it_builds_debug() -> Result<()> { - let name = "foo_debug"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build") @@ -19,7 +18,7 @@ fn it_builds_debug() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; // A lock file should only be generated for projects with // registry dependencies @@ -30,8 +29,7 @@ fn it_builds_debug() -> Result<()> { #[test] fn it_builds_a_bin_project_with_snake_case() -> Result<()> { - let name = "hello_world"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("hello_world")?; project .cargo_component("build --release") @@ -39,15 +37,14 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("hello_world"))?; Ok(()) } #[test] fn it_builds_a_bin_project() -> Result<()> { - let name = "foo_bin_project"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("foo")?; project .cargo_component("build --release") @@ -55,7 +52,7 @@ fn it_builds_a_bin_project() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("foo"))?; Ok(()) } @@ -115,8 +112,7 @@ edition = "2021" #[test] fn it_supports_wit_keywords() -> Result<()> { - let name = "interface"; - let project = Project::new(name)?; + let project = Project::new("interface")?; project .cargo_component("build --release") @@ -124,15 +120,14 @@ fn it_supports_wit_keywords() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("interface"))?; Ok(()) } #[test] fn it_adds_a_producers_field() -> Result<()> { - let name = "foo_producer_section"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build --release") @@ -140,7 +135,7 @@ fn it_adds_a_producers_field() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - let path = project.release_wasm(name); + let path = project.release_wasm("foo"); validate_component(&path)?; @@ -162,8 +157,7 @@ fn it_adds_a_producers_field() -> Result<()> { #[test] fn it_builds_wasm32_unknown_unknown() -> Result<()> { - let name = "foo_wasm32_unknown_unknown"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build --target wasm32-unknown-unknown") @@ -176,7 +170,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { .build_dir() .join("wasm32-unknown-unknown") .join("debug") - .join(format!("{name}.wasm")), + .join("foo.wasm"), )?; Ok(()) @@ -184,8 +178,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { #[test] fn it_regenerates_target_if_wit_changed() -> Result<()> { - let name = "foo_if_wit_changed"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["target"]["world"] = value("example"); Ok(doc) @@ -197,7 +190,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; project .cargo_component("build") @@ -218,8 +211,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { #[test] fn it_builds_with_local_wit_deps() -> Result<()> { - let name = "foo_local_wit_deps"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { let mut dependencies = Table::new(); dependencies["foo:bar"]["path"] = value("wit/deps/foo-bar"); @@ -304,15 +296,14 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } #[test] fn empty_world_with_dep_valid() -> Result<()> { - let name = "dep"; - let project = Project::new(name)?; + let project = Project::new("dep")?; fs::write( project.root().join("wit/world.wit"), @@ -349,7 +340,7 @@ fn empty_world_with_dep_valid() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("dep"); validate_component(&dep)?; let project = Project::with_dir(project.dir().clone(), "main", "")?; @@ -388,8 +379,7 @@ fn empty_world_with_dep_valid() -> Result<()> { #[test] fn it_builds_with_resources() -> Result<()> { - let name = "foo_resources"; - let project = Project::new(name)?; + let project = Project::new("foo")?; fs::write( project.root().join("wit/world.wit"), @@ -449,7 +439,7 @@ fn it_builds_with_resources() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -457,8 +447,7 @@ fn it_builds_with_resources() -> Result<()> { #[test] fn it_builds_resources_with_specified_ownership_model() -> Result<()> { - let name = "foo_resources_with_specified_ownership_model"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["ownership"] = value("borrowing-duplicate-if-necessary"); @@ -523,7 +512,7 @@ fn it_builds_resources_with_specified_ownership_model() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -649,8 +638,7 @@ bindings::export!(Component with_types_in bindings); #[test] fn it_builds_with_adapter() -> Result<()> { - let name = "foo_with_adapter"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value("not-a-valid-path"); Ok(doc) @@ -662,7 +650,7 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("error: failed to read module adapter")) .failure(); - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path().to_str().unwrap()); @@ -675,22 +663,20 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } #[test] fn it_errors_if_adapter_is_not_wasm() -> Result<()> { - let name = "foo_errors_on_adapter"; - let file_name = format!("{name}.wasm"); - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { - doc["package"]["metadata"]["component"]["adapter"] = value(&file_name); + doc["package"]["metadata"]["component"]["adapter"] = value("foo.wasm"); Ok(doc) })?; - fs::write(project.root().join(file_name), "not wasm")?; + fs::write(project.root().join("foo.wasm"), "not wasm")?; project .cargo_component("build") @@ -703,8 +689,7 @@ fn it_errors_if_adapter_is_not_wasm() -> Result<()> { #[test] fn it_adds_additional_derives() -> Result<()> { - let name = "foo_add_derives"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["derives"] = value(Array::from_iter(["serde::Serialize", "serde::Deserialize"])); @@ -769,15 +754,14 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } #[test] fn it_builds_with_versioned_wit() -> Result<()> { - let name = "foo_versioned_wit"; - let project = Project::new(name)?; + let project = Project::new("foo")?; fs::write( project.root().join("wit/world.wit"), @@ -812,7 +796,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -820,8 +804,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { #[test] fn it_warns_on_proxy_setting_for_command() -> Result<()> { - let name = "foo_warn_proxy"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); Ok(doc) @@ -835,15 +818,14 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { )) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } #[test] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { - let name = "foo_warn_proxy_and_adapter"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); doc["package"]["metadata"]["component"]["adapter"] = @@ -857,16 +839,15 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { .stderr(contains("warning: ignoring `proxy` setting due to `adapter` setting being present in `Cargo.toml`")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } #[test] fn it_builds_with_proxy_adapter() -> Result<()> { - let name = "foo_proxy"; let dir = Rc::new(TempDir::new()?); - let project = Project::with_dir(dir.clone(), name, "--proxy")?; + let project = Project::with_dir(dir.clone(), "foo", "--proxy")?; project .cargo_component("build") @@ -874,9 +855,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; - let text = wasmprinter::print_file(project.debug_wasm(name))?; + let text = wasmprinter::print_file(project.debug_wasm("foo"))?; assert!( !text.contains("wasi:cli/environment"), "proxy wasm should have no reference to `wasi:cli/environment`" @@ -887,10 +868,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { #[test] fn it_does_not_generate_bindings_for_cargo_projects() -> Result<()> { - let name = "foo_not_generate"; let dir = TempDir::new()?; - for (name, args) in [(name, &["new", "--lib"] as &[_]), ("bar", &["new"])] { + for (name, args) in [("foo", &["new", "--lib"] as &[_]), ("bar", &["new"])] { let mut cmd = Command::new("cargo"); cmd.current_dir(dir.path()); cmd.args(args); From 2548471ab3949131e4814ac9e2000531eda20f6a Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 11:36:18 -0500 Subject: [PATCH 5/7] Revert "Revert "attempting fix for test temp directory conflicts"" This reverts commit c5f0205f69b3abf2cba4ff35dd5ff850eec6e400. --- tests/build.rs | 100 +++++++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 40 deletions(-) diff --git a/tests/build.rs b/tests/build.rs index 2999b9bd..1a7b1f6e 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -10,7 +10,8 @@ mod support; #[test] fn it_builds_debug() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_debug"; + let project = Project::new(name)?; project .cargo_component("build") @@ -18,7 +19,7 @@ fn it_builds_debug() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; // A lock file should only be generated for projects with // registry dependencies @@ -29,7 +30,8 @@ fn it_builds_debug() -> Result<()> { #[test] fn it_builds_a_bin_project_with_snake_case() -> Result<()> { - let project = Project::new_bin("hello_world")?; + let name = "hello_world"; + let project = Project::new_bin(name)?; project .cargo_component("build --release") @@ -37,14 +39,15 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("hello_world"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } #[test] fn it_builds_a_bin_project() -> Result<()> { - let project = Project::new_bin("foo")?; + let name = "foo_bin_project"; + let project = Project::new_bin(name)?; project .cargo_component("build --release") @@ -52,7 +55,7 @@ fn it_builds_a_bin_project() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("foo"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } @@ -112,7 +115,8 @@ edition = "2021" #[test] fn it_supports_wit_keywords() -> Result<()> { - let project = Project::new("interface")?; + let name = "interface"; + let project = Project::new(name)?; project .cargo_component("build --release") @@ -120,14 +124,15 @@ fn it_supports_wit_keywords() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm("interface"))?; + validate_component(&project.release_wasm(name))?; Ok(()) } #[test] fn it_adds_a_producers_field() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_producer_section"; + let project = Project::new(name)?; project .cargo_component("build --release") @@ -135,7 +140,7 @@ fn it_adds_a_producers_field() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - let path = project.release_wasm("foo"); + let path = project.release_wasm(name); validate_component(&path)?; @@ -157,7 +162,8 @@ fn it_adds_a_producers_field() -> Result<()> { #[test] fn it_builds_wasm32_unknown_unknown() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_wasm32_unknown_unknown"; + let project = Project::new(name)?; project .cargo_component("build --target wasm32-unknown-unknown") @@ -170,7 +176,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { .build_dir() .join("wasm32-unknown-unknown") .join("debug") - .join("foo.wasm"), + .join(format!("{name}.wasm")), )?; Ok(()) @@ -178,7 +184,8 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { #[test] fn it_regenerates_target_if_wit_changed() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_if_wit_changed"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["target"]["world"] = value("example"); Ok(doc) @@ -190,7 +197,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; project .cargo_component("build") @@ -211,7 +218,8 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { #[test] fn it_builds_with_local_wit_deps() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_local_wit_deps"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { let mut dependencies = Table::new(); dependencies["foo:bar"]["path"] = value("wit/deps/foo-bar"); @@ -296,14 +304,15 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn empty_world_with_dep_valid() -> Result<()> { - let project = Project::new("dep")?; + let name = "dep"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -340,7 +349,7 @@ fn empty_world_with_dep_valid() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("dep"); + let dep = project.debug_wasm(name); validate_component(&dep)?; let project = Project::with_dir(project.dir().clone(), "main", "")?; @@ -379,7 +388,8 @@ fn empty_world_with_dep_valid() -> Result<()> { #[test] fn it_builds_with_resources() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_resources"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -439,7 +449,7 @@ fn it_builds_with_resources() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -447,7 +457,8 @@ fn it_builds_with_resources() -> Result<()> { #[test] fn it_builds_resources_with_specified_ownership_model() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_resources_with_specified_ownership_model"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["ownership"] = value("borrowing-duplicate-if-necessary"); @@ -512,7 +523,7 @@ fn it_builds_resources_with_specified_ownership_model() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -638,7 +649,8 @@ bindings::export!(Component with_types_in bindings); #[test] fn it_builds_with_adapter() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_with_adapter"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value("not-a-valid-path"); Ok(doc) @@ -650,7 +662,7 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("error: failed to read module adapter")) .failure(); - let project = Project::new("foo")?; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path().to_str().unwrap()); @@ -663,20 +675,22 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_errors_if_adapter_is_not_wasm() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_errors_on_adapter"; + let file_name = format!("{name}.wasm"); + let project = Project::new(name)?; project.update_manifest(|mut doc| { - doc["package"]["metadata"]["component"]["adapter"] = value("foo.wasm"); + doc["package"]["metadata"]["component"]["adapter"] = value(&file_name); Ok(doc) })?; - fs::write(project.root().join("foo.wasm"), "not wasm")?; + fs::write(project.root().join(file_name), "not wasm")?; project .cargo_component("build") @@ -689,7 +703,8 @@ fn it_errors_if_adapter_is_not_wasm() -> Result<()> { #[test] fn it_adds_additional_derives() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_add_derives"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["derives"] = value(Array::from_iter(["serde::Serialize", "serde::Deserialize"])); @@ -754,14 +769,15 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_builds_with_versioned_wit() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_versioned_wit"; + let project = Project::new(name)?; fs::write( project.root().join("wit/world.wit"), @@ -796,7 +812,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm("foo"); + let dep = project.debug_wasm(name); validate_component(&dep)?; Ok(()) @@ -804,7 +820,8 @@ fn it_builds_with_versioned_wit() -> Result<()> { #[test] fn it_warns_on_proxy_setting_for_command() -> Result<()> { - let project = Project::new_bin("foo")?; + let name = "foo_warn_proxy"; + let project = Project::new_bin(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); Ok(doc) @@ -818,14 +835,15 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { )) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { - let project = Project::new("foo")?; + let name = "foo_warn_proxy_and_adapter"; + let project = Project::new(name)?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); doc["package"]["metadata"]["component"]["adapter"] = @@ -839,15 +857,16 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { .stderr(contains("warning: ignoring `proxy` setting due to `adapter` setting being present in `Cargo.toml`")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; Ok(()) } #[test] fn it_builds_with_proxy_adapter() -> Result<()> { + let name = "foo_proxy"; let dir = Rc::new(TempDir::new()?); - let project = Project::with_dir(dir.clone(), "foo", "--proxy")?; + let project = Project::with_dir(dir.clone(), name, "--proxy")?; project .cargo_component("build") @@ -855,9 +874,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm("foo"))?; + validate_component(&project.debug_wasm(name))?; - let text = wasmprinter::print_file(project.debug_wasm("foo"))?; + let text = wasmprinter::print_file(project.debug_wasm(name))?; assert!( !text.contains("wasi:cli/environment"), "proxy wasm should have no reference to `wasi:cli/environment`" @@ -868,9 +887,10 @@ fn it_builds_with_proxy_adapter() -> Result<()> { #[test] fn it_does_not_generate_bindings_for_cargo_projects() -> Result<()> { + let name = "foo_not_generate"; let dir = TempDir::new()?; - for (name, args) in [("foo", &["new", "--lib"] as &[_]), ("bar", &["new"])] { + for (name, args) in [(name, &["new", "--lib"] as &[_]), ("bar", &["new"])] { let mut cmd = Command::new("cargo"); cmd.current_dir(dir.path()); cmd.args(args); From 99d4ab88dfbee8beb27c0de4a09c11eac0b050e3 Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 11:43:29 -0500 Subject: [PATCH 6/7] attempt to fix CI MacOS tests with running build tests serial instead of parallel --- Cargo.lock | 43 ++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 2 ++ tests/build.rs | 22 ++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index cf96bed4..8b60dd86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -564,6 +564,7 @@ dependencies = [ "semver", "serde 1.0.197", "serde_json", + "serial_test", "shell-escape", "tempfile", "tokio", @@ -1570,7 +1571,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -2959,6 +2960,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scc" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ad2bbb0ae5100a07b7a6f2ed7ab5fd0045551a4c507989b7a620046ea3efdc" +dependencies = [ + "sdd", +] + [[package]] name = "schannel" version = "0.1.23" @@ -2974,6 +2984,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sdd" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d" + [[package]] name = "sec1" version = "0.7.3" @@ -3192,6 +3208,31 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "serial_test" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "sha1" version = "0.10.6" diff --git a/Cargo.toml b/Cargo.toml index cdd0bde4..36a651b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,6 +63,7 @@ wat = { workspace = true } warg-server = { workspace = true } tempfile = { workspace = true } wasmprinter = { workspace = true } +serial_test = { workspace = true } [workspace] members = ["crates/core", "crates/wit"] @@ -111,6 +112,7 @@ predicates = "3.1.0" wasmparser = "0.202.0" wat = "1.202.0" wasmprinter = "0.202.0" +serial_test = "3.1.1" [profile.release] panic = "abort" diff --git a/tests/build.rs b/tests/build.rs index 1a7b1f6e..b1503d7e 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -2,6 +2,7 @@ use crate::support::*; use anyhow::{Context, Result}; use assert_cmd::prelude::*; use predicates::{prelude::PredicateBooleanExt, str::contains}; +use serial_test::serial; use std::{fs, process::Command, rc::Rc}; use tempfile::TempDir; use toml_edit::{value, Array, Item, Table}; @@ -9,6 +10,7 @@ use toml_edit::{value, Array, Item, Table}; mod support; #[test] +#[serial] fn it_builds_debug() -> Result<()> { let name = "foo_debug"; let project = Project::new(name)?; @@ -29,6 +31,7 @@ fn it_builds_debug() -> Result<()> { } #[test] +#[serial] fn it_builds_a_bin_project_with_snake_case() -> Result<()> { let name = "hello_world"; let project = Project::new_bin(name)?; @@ -45,6 +48,7 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { } #[test] +#[serial] fn it_builds_a_bin_project() -> Result<()> { let name = "foo_bin_project"; let project = Project::new_bin(name)?; @@ -61,6 +65,7 @@ fn it_builds_a_bin_project() -> Result<()> { } #[test] +#[serial] fn it_builds_a_workspace() -> Result<()> { let dir = Rc::new(TempDir::new()?); let project = Project { @@ -114,6 +119,7 @@ edition = "2021" } #[test] +#[serial] fn it_supports_wit_keywords() -> Result<()> { let name = "interface"; let project = Project::new(name)?; @@ -130,6 +136,7 @@ fn it_supports_wit_keywords() -> Result<()> { } #[test] +#[serial] fn it_adds_a_producers_field() -> Result<()> { let name = "foo_producer_section"; let project = Project::new(name)?; @@ -161,6 +168,7 @@ fn it_adds_a_producers_field() -> Result<()> { } #[test] +#[serial] fn it_builds_wasm32_unknown_unknown() -> Result<()> { let name = "foo_wasm32_unknown_unknown"; let project = Project::new(name)?; @@ -183,6 +191,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { } #[test] +#[serial] fn it_regenerates_target_if_wit_changed() -> Result<()> { let name = "foo_if_wit_changed"; let project = Project::new(name)?; @@ -217,6 +226,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { } #[test] +#[serial] fn it_builds_with_local_wit_deps() -> Result<()> { let name = "foo_local_wit_deps"; let project = Project::new(name)?; @@ -310,6 +320,7 @@ bindings::export!(Component with_types_in bindings); } #[test] +#[serial] fn empty_world_with_dep_valid() -> Result<()> { let name = "dep"; let project = Project::new(name)?; @@ -387,6 +398,7 @@ fn empty_world_with_dep_valid() -> Result<()> { } #[test] +#[serial] fn it_builds_with_resources() -> Result<()> { let name = "foo_resources"; let project = Project::new(name)?; @@ -456,6 +468,7 @@ fn it_builds_with_resources() -> Result<()> { } #[test] +#[serial] fn it_builds_resources_with_specified_ownership_model() -> Result<()> { let name = "foo_resources_with_specified_ownership_model"; let project = Project::new(name)?; @@ -530,6 +543,7 @@ fn it_builds_resources_with_specified_ownership_model() -> Result<()> { } #[test] +#[serial] fn it_builds_with_a_component_dependency() -> Result<()> { let dir = Rc::new(TempDir::new()?); let comp1 = Project::with_dir(dir.clone(), "comp1", "")?; @@ -648,6 +662,7 @@ bindings::export!(Component with_types_in bindings); } #[test] +#[serial] fn it_builds_with_adapter() -> Result<()> { let name = "foo_with_adapter"; let project = Project::new(name)?; @@ -681,6 +696,7 @@ fn it_builds_with_adapter() -> Result<()> { } #[test] +#[serial] fn it_errors_if_adapter_is_not_wasm() -> Result<()> { let name = "foo_errors_on_adapter"; let file_name = format!("{name}.wasm"); @@ -702,6 +718,7 @@ fn it_errors_if_adapter_is_not_wasm() -> Result<()> { } #[test] +#[serial] fn it_adds_additional_derives() -> Result<()> { let name = "foo_add_derives"; let project = Project::new(name)?; @@ -775,6 +792,7 @@ bindings::export!(Component with_types_in bindings); } #[test] +#[serial] fn it_builds_with_versioned_wit() -> Result<()> { let name = "foo_versioned_wit"; let project = Project::new(name)?; @@ -819,6 +837,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { } #[test] +#[serial] fn it_warns_on_proxy_setting_for_command() -> Result<()> { let name = "foo_warn_proxy"; let project = Project::new_bin(name)?; @@ -841,6 +860,7 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { } #[test] +#[serial] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { let name = "foo_warn_proxy_and_adapter"; let project = Project::new(name)?; @@ -863,6 +883,7 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { } #[test] +#[serial] fn it_builds_with_proxy_adapter() -> Result<()> { let name = "foo_proxy"; let dir = Rc::new(TempDir::new()?); @@ -886,6 +907,7 @@ fn it_builds_with_proxy_adapter() -> Result<()> { } #[test] +#[serial] fn it_does_not_generate_bindings_for_cargo_projects() -> Result<()> { let name = "foo_not_generate"; let dir = TempDir::new()?; From 9241cba0a4ca233cac89fb3144a7f27caaec4f7c Mon Sep 17 00:00:00 2001 From: Calvin Prewitt Date: Mon, 6 May 2024 11:48:22 -0500 Subject: [PATCH 7/7] reverted previous test name changes --- tests/build.rs | 100 ++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 60 deletions(-) diff --git a/tests/build.rs b/tests/build.rs index b1503d7e..ed1a6b1c 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -12,8 +12,7 @@ mod support; #[test] #[serial] fn it_builds_debug() -> Result<()> { - let name = "foo_debug"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build") @@ -21,7 +20,7 @@ fn it_builds_debug() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; // A lock file should only be generated for projects with // registry dependencies @@ -33,8 +32,7 @@ fn it_builds_debug() -> Result<()> { #[test] #[serial] fn it_builds_a_bin_project_with_snake_case() -> Result<()> { - let name = "hello_world"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("hello_world")?; project .cargo_component("build --release") @@ -42,7 +40,7 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("hello_world"))?; Ok(()) } @@ -50,8 +48,7 @@ fn it_builds_a_bin_project_with_snake_case() -> Result<()> { #[test] #[serial] fn it_builds_a_bin_project() -> Result<()> { - let name = "foo_bin_project"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("foo")?; project .cargo_component("build --release") @@ -59,7 +56,7 @@ fn it_builds_a_bin_project() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("foo"))?; Ok(()) } @@ -121,8 +118,7 @@ edition = "2021" #[test] #[serial] fn it_supports_wit_keywords() -> Result<()> { - let name = "interface"; - let project = Project::new(name)?; + let project = Project::new("interface")?; project .cargo_component("build --release") @@ -130,7 +126,7 @@ fn it_supports_wit_keywords() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - validate_component(&project.release_wasm(name))?; + validate_component(&project.release_wasm("interface"))?; Ok(()) } @@ -138,8 +134,7 @@ fn it_supports_wit_keywords() -> Result<()> { #[test] #[serial] fn it_adds_a_producers_field() -> Result<()> { - let name = "foo_producer_section"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build --release") @@ -147,7 +142,7 @@ fn it_adds_a_producers_field() -> Result<()> { .stderr(contains("Finished release [optimized] target(s)")) .success(); - let path = project.release_wasm(name); + let path = project.release_wasm("foo"); validate_component(&path)?; @@ -170,8 +165,7 @@ fn it_adds_a_producers_field() -> Result<()> { #[test] #[serial] fn it_builds_wasm32_unknown_unknown() -> Result<()> { - let name = "foo_wasm32_unknown_unknown"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project .cargo_component("build --target wasm32-unknown-unknown") @@ -184,7 +178,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { .build_dir() .join("wasm32-unknown-unknown") .join("debug") - .join(format!("{name}.wasm")), + .join("foo.wasm"), )?; Ok(()) @@ -193,8 +187,7 @@ fn it_builds_wasm32_unknown_unknown() -> Result<()> { #[test] #[serial] fn it_regenerates_target_if_wit_changed() -> Result<()> { - let name = "foo_if_wit_changed"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["target"]["world"] = value("example"); Ok(doc) @@ -206,7 +199,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; project .cargo_component("build") @@ -228,8 +221,7 @@ fn it_regenerates_target_if_wit_changed() -> Result<()> { #[test] #[serial] fn it_builds_with_local_wit_deps() -> Result<()> { - let name = "foo_local_wit_deps"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { let mut dependencies = Table::new(); dependencies["foo:bar"]["path"] = value("wit/deps/foo-bar"); @@ -314,7 +306,7 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } @@ -322,8 +314,7 @@ bindings::export!(Component with_types_in bindings); #[test] #[serial] fn empty_world_with_dep_valid() -> Result<()> { - let name = "dep"; - let project = Project::new(name)?; + let project = Project::new("dep")?; fs::write( project.root().join("wit/world.wit"), @@ -360,7 +351,7 @@ fn empty_world_with_dep_valid() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("dep"); validate_component(&dep)?; let project = Project::with_dir(project.dir().clone(), "main", "")?; @@ -400,8 +391,7 @@ fn empty_world_with_dep_valid() -> Result<()> { #[test] #[serial] fn it_builds_with_resources() -> Result<()> { - let name = "foo_resources"; - let project = Project::new(name)?; + let project = Project::new("foo")?; fs::write( project.root().join("wit/world.wit"), @@ -461,7 +451,7 @@ fn it_builds_with_resources() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -470,8 +460,7 @@ fn it_builds_with_resources() -> Result<()> { #[test] #[serial] fn it_builds_resources_with_specified_ownership_model() -> Result<()> { - let name = "foo_resources_with_specified_ownership_model"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["ownership"] = value("borrowing-duplicate-if-necessary"); @@ -536,7 +525,7 @@ fn it_builds_resources_with_specified_ownership_model() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -664,8 +653,7 @@ bindings::export!(Component with_types_in bindings); #[test] #[serial] fn it_builds_with_adapter() -> Result<()> { - let name = "foo_with_adapter"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value("not-a-valid-path"); Ok(doc) @@ -677,7 +665,7 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("error: failed to read module adapter")) .failure(); - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path().to_str().unwrap()); @@ -690,7 +678,7 @@ fn it_builds_with_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } @@ -698,15 +686,13 @@ fn it_builds_with_adapter() -> Result<()> { #[test] #[serial] fn it_errors_if_adapter_is_not_wasm() -> Result<()> { - let name = "foo_errors_on_adapter"; - let file_name = format!("{name}.wasm"); - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { - doc["package"]["metadata"]["component"]["adapter"] = value(&file_name); + doc["package"]["metadata"]["component"]["adapter"] = value("foo.wasm"); Ok(doc) })?; - fs::write(project.root().join(file_name), "not wasm")?; + fs::write(project.root().join("foo.wasm"), "not wasm")?; project .cargo_component("build") @@ -720,8 +706,7 @@ fn it_errors_if_adapter_is_not_wasm() -> Result<()> { #[test] #[serial] fn it_adds_additional_derives() -> Result<()> { - let name = "foo_add_derives"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["bindings"]["derives"] = value(Array::from_iter(["serde::Serialize", "serde::Deserialize"])); @@ -786,7 +771,7 @@ bindings::export!(Component with_types_in bindings); .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } @@ -794,8 +779,7 @@ bindings::export!(Component with_types_in bindings); #[test] #[serial] fn it_builds_with_versioned_wit() -> Result<()> { - let name = "foo_versioned_wit"; - let project = Project::new(name)?; + let project = Project::new("foo")?; fs::write( project.root().join("wit/world.wit"), @@ -830,7 +814,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { project.cargo_component("build").assert().success(); - let dep = project.debug_wasm(name); + let dep = project.debug_wasm("foo"); validate_component(&dep)?; Ok(()) @@ -839,8 +823,7 @@ fn it_builds_with_versioned_wit() -> Result<()> { #[test] #[serial] fn it_warns_on_proxy_setting_for_command() -> Result<()> { - let name = "foo_warn_proxy"; - let project = Project::new_bin(name)?; + let project = Project::new_bin("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); Ok(doc) @@ -854,7 +837,7 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { )) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } @@ -862,8 +845,7 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { #[test] #[serial] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { - let name = "foo_warn_proxy_and_adapter"; - let project = Project::new(name)?; + let project = Project::new("foo")?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); doc["package"]["metadata"]["component"]["adapter"] = @@ -877,7 +859,7 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { .stderr(contains("warning: ignoring `proxy` setting due to `adapter` setting being present in `Cargo.toml`")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; Ok(()) } @@ -885,9 +867,8 @@ fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { #[test] #[serial] fn it_builds_with_proxy_adapter() -> Result<()> { - let name = "foo_proxy"; let dir = Rc::new(TempDir::new()?); - let project = Project::with_dir(dir.clone(), name, "--proxy")?; + let project = Project::with_dir(dir.clone(), "foo", "--proxy")?; project .cargo_component("build") @@ -895,9 +876,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { .stderr(contains("Finished dev [unoptimized + debuginfo] target(s)")) .success(); - validate_component(&project.debug_wasm(name))?; + validate_component(&project.debug_wasm("foo"))?; - let text = wasmprinter::print_file(project.debug_wasm(name))?; + let text = wasmprinter::print_file(project.debug_wasm("foo"))?; assert!( !text.contains("wasi:cli/environment"), "proxy wasm should have no reference to `wasi:cli/environment`" @@ -909,10 +890,9 @@ fn it_builds_with_proxy_adapter() -> Result<()> { #[test] #[serial] fn it_does_not_generate_bindings_for_cargo_projects() -> Result<()> { - let name = "foo_not_generate"; let dir = TempDir::new()?; - for (name, args) in [(name, &["new", "--lib"] as &[_]), ("bar", &["new"])] { + for (name, args) in [("foo", &["new", "--lib"] as &[_]), ("bar", &["new"])] { let mut cmd = Command::new("cargo"); cmd.current_dir(dir.path()); cmd.args(args);