From ee2be85f464ffd1e66266eb3e27f274210f8d04e Mon Sep 17 00:00:00 2001 From: Ashley Williams Date: Thu, 16 May 2019 09:22:45 -0500 Subject: [PATCH] test(generate): it works --- Cargo.lock | 14 ++++++++------ Cargo.toml | 2 +- tests/all/generate.rs | 16 ++++------------ tests/all/utils/fixture.rs | 29 ++++++++++++++++++++++++++++- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3317cb735..93316547b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,10 +48,10 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "0.10.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "escargot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "escargot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "predicates 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "predicates-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "predicates-tree 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -476,9 +476,11 @@ dependencies = [ [[package]] name = "escargot" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1966,7 +1968,7 @@ dependencies = [ name = "wasm-pack" version = "0.8.1" dependencies = [ - "assert_cmd 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "binary-install 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2097,7 +2099,7 @@ dependencies = [ "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum assert_cmd 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7ac5c260f75e4e4ba87b7342be6edcecbcb3eb6741a0507fda7ad115845cc65" +"checksum assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc477793bd82ec39799b6f6b3df64938532fdf2ab0d49ef817eac65856a5a1e" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" "checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" @@ -2142,7 +2144,7 @@ dependencies = [ "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" -"checksum escargot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19db1f7e74438642a5018cdf263bb1325b2e792f02dd0a3ca6d6c0f0d7b1d5a5" +"checksum escargot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ceb9adbf9874d5d028b5e4c5739d22b71988252b25c9c98fe7cf9738bee84597" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646" diff --git a/Cargo.toml b/Cargo.toml index 0fb0c5e6c..5b876cfa2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ walkdir = "2" chrono = "0.4.6" [dev-dependencies] -assert_cmd = "0.10.2" +assert_cmd = "0.11" lazy_static = "1.1.0" predicates = "1.0.0" tempfile = "3" diff --git a/tests/all/generate.rs b/tests/all/generate.rs index bec03e8d2..432a79816 100644 --- a/tests/all/generate.rs +++ b/tests/all/generate.rs @@ -1,24 +1,16 @@ use assert_cmd::prelude::*; -use std::str; use utils; #[test] fn new_with_no_name_errors() { let fixture = utils::fixture::not_a_crate(); + fixture.install_local_cargo_generate(); fixture.wasm_pack().arg("new").assert().failure(); } #[test] -fn new_with_provided_name() { +fn new_with_name_succeeds() { let fixture = utils::fixture::not_a_crate(); - let cmd = fixture - .wasm_pack() - .arg("new") - .arg("--name") - .arg("ferris") - .assert(); - - let output = cmd.get_output(); - - assert!(str::from_utf8(&output.stdout).unwrap().contains("ferris")); + fixture.install_local_cargo_generate(); + fixture.wasm_pack().arg("new").arg("hello").assert().success(); } diff --git a/tests/all/utils/fixture.rs b/tests/all/utils/fixture.rs index 47560bc83..736710f97 100644 --- a/tests/all/utils/fixture.rs +++ b/tests/all/utils/fixture.rs @@ -237,6 +237,32 @@ impl Fixture { download().unwrap().binary("wasm-bindgen").unwrap() } + /// Install a local cargo-generate for this fixture. + /// + /// Takes care not to re-install for every fixture, but only the one time + /// for the whole test suite. + pub fn install_local_cargo_generate(&self) -> PathBuf { + static INSTALL_CARGO_GENERATE: Once = ONCE_INIT; + let cache = self.cache(); + + let download = || { + if let Ok(download) = + install::download_prebuilt(&Tool::CargoGenerate, &cache, "latest", true) + { + return Ok(download); + } + + install::cargo_install(Tool::CargoGenerate, &cache, "latest", true) + }; + + // Only one thread can perform the actual download, and then afterwards + // everything will hit the cache so we can run the same path. + INSTALL_CARGO_GENERATE.call_once(|| { + download().unwrap(); + }); + download().unwrap().binary("cargo-generate").unwrap() + } + /// Download `geckodriver` and return its path. /// /// Takes care to ensure that only one `geckodriver` is downloaded for the whole @@ -298,7 +324,8 @@ impl Fixture { /// directory and using the test cache. pub fn wasm_pack(&self) -> Command { use assert_cmd::prelude::*; - let mut cmd = Command::main_binary().unwrap(); + let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")) + .unwrap(); cmd.current_dir(&self.path); cmd.env("WASM_PACK_CACHE", self.cache_dir()); cmd