use assert_cmd::prelude::*; use predicates::boolean::PredicateBooleanExt; use predicates::prelude::predicate::str::contains; use predicates::reflection::PredicateReflection; use predicates::Predicate; use utils; fn matches_info() -> impl Predicate + PredicateReflection { contains("[INFO]: Checking for the Wasm target...") .and(contains("[INFO]: Compiling to Wasm...")) .and(contains("[INFO]: License key is set in Cargo.toml but no LICENSE file(s) were found; Please add the LICENSE file(s) to your project directory")) .and(contains("[INFO]: Installing wasm-bindgen...")) .and(contains("[INFO]: Optimizing wasm binaries with `wasm-opt`...")) .and(contains("[INFO]: :-) Done in ")) .and(contains("[INFO]: :-) Your wasm pkg is ready to publish at ")) } fn matches_warn() -> impl Predicate + PredicateReflection { contains(":-) [WARN]: origin crate has no README") } fn matches_cargo() -> impl Predicate + PredicateReflection { contains("Finished release [optimized] target(s) in ") } #[test] fn quiet() { utils::fixture::Fixture::new() .cargo_toml("js-hello-world") .hello_world_src_lib() .wasm_pack() .arg("--quiet") .arg("build") .assert() .success() .stdout("") .stderr(""); } #[test] fn log_level_info() { utils::fixture::Fixture::new() .cargo_toml("js-hello-world") .hello_world_src_lib() .wasm_pack() .arg("--log-level") .arg("info") .arg("build") .assert() .success() .stdout("") .stderr(matches_cargo().and(matches_warn()).and(matches_info())); } #[test] fn log_level_warn() { utils::fixture::Fixture::new() .cargo_toml("js-hello-world") .hello_world_src_lib() .wasm_pack() .arg("--log-level") .arg("warn") .arg("build") .assert() .success() .stdout("") .stderr( matches_cargo() .and(matches_warn()) .and(matches_info().not()), ); } #[test] fn log_level_error() { utils::fixture::Fixture::new() .cargo_toml("js-hello-world") .hello_world_src_lib() .wasm_pack() .arg("--log-level") .arg("error") .arg("build") .assert() .success() .stdout("") .stderr( matches_cargo() .and(matches_warn().not()) .and(matches_info().not()), ); }