diff --git a/tests/all/manifest.rs b/tests/all/manifest.rs index 45f046e..55431dc 100644 --- a/tests/all/manifest.rs +++ b/tests/all/manifest.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use std::fs; use std::path::PathBuf; -use utils; +use utils::{self, fixture}; use wasm_pack::{self, manifest}; #[test] @@ -53,7 +53,7 @@ fn it_recognizes_a_map_during_depcheck() { #[test] fn it_creates_a_package_json_default_path() { - let fixture = utils::fixture("."); + let fixture = fixture::fixture("."); let step = wasm_pack::progressbar::Step::new(1); wasm_pack::command::init::create_pkg_dir(&fixture.path, &step).unwrap(); assert!(manifest::write_package_json(&fixture.path, &None, false, "", &step).is_ok()); @@ -81,7 +81,7 @@ fn it_creates_a_package_json_default_path() { #[test] fn it_creates_a_package_json_provided_path() { - let fixture = utils::fixture("tests/fixtures/js-hello-world"); + let fixture = fixture::fixture("tests/fixtures/js-hello-world"); let step = wasm_pack::progressbar::Step::new(1); wasm_pack::command::init::create_pkg_dir(&fixture.path, &step).unwrap(); assert!(manifest::write_package_json(&fixture.path, &None, false, "", &step).is_ok()); @@ -102,7 +102,7 @@ fn it_creates_a_package_json_provided_path() { #[test] fn it_creates_a_package_json_provided_path_with_scope() { - let fixture = utils::fixture("tests/fixtures/scopes"); + let fixture = fixture::fixture("tests/fixtures/scopes"); let step = wasm_pack::progressbar::Step::new(1); wasm_pack::command::init::create_pkg_dir(&fixture.path, &step).unwrap(); assert!( @@ -126,7 +126,7 @@ fn it_creates_a_package_json_provided_path_with_scope() { #[test] fn it_creates_a_pkg_json_with_correct_files_on_node() { - let fixture = utils::fixture("."); + let fixture = fixture::fixture("."); let step = wasm_pack::progressbar::Step::new(1); wasm_pack::command::init::create_pkg_dir(&fixture.path, &step).unwrap(); assert!(manifest::write_package_json(&fixture.path, &None, false, "nodejs", &step).is_ok()); @@ -155,7 +155,7 @@ fn it_creates_a_pkg_json_with_correct_files_on_node() { #[test] fn it_creates_a_package_json_with_correct_keys_when_types_are_skipped() { - let fixture = utils::fixture("."); + let fixture = fixture::fixture("."); let step = wasm_pack::progressbar::Step::new(1); wasm_pack::command::init::create_pkg_dir(&fixture.path, &step).unwrap(); assert!(manifest::write_package_json(&fixture.path, &None, true, "", &step).is_ok()); @@ -181,14 +181,14 @@ fn it_creates_a_package_json_with_correct_keys_when_types_are_skipped() { #[test] fn it_errors_when_wasm_bindgen_is_not_declared() { - let fixture = utils::fixture("tests/fixtures/bad-cargo-toml"); + let fixture = fixture::fixture("tests/fixtures/bad-cargo-toml"); let step = wasm_pack::progressbar::Step::new(1); assert!(manifest::check_crate_config(&fixture.path, &step).is_err()); } #[test] fn it_does_not_error_when_wasm_bindgen_is_declared() { - let fixture = utils::fixture("tests/fixtures/js-hello-world"); + let fixture = fixture::fixture("tests/fixtures/js-hello-world"); let step = wasm_pack::progressbar::Step::new(1); assert!(manifest::check_crate_config(&fixture.path, &step).is_ok()); } diff --git a/tests/all/readme.rs b/tests/all/readme.rs index 33c43ad..9bb88b1 100644 --- a/tests/all/readme.rs +++ b/tests/all/readme.rs @@ -3,12 +3,12 @@ extern crate wasm_pack; use std::fs; -use utils; +use utils::{self, fixture}; use wasm_pack::readme; #[test] fn it_copies_a_readme_default_path() { - let fixture = utils::fixture("."); + let fixture = fixture::fixture("."); fs::create_dir(fixture.path.join("pkg")).expect("should create pkg directory OK"); let step = wasm_pack::progressbar::Step::new(1); @@ -25,14 +25,14 @@ fn it_copies_a_readme_default_path() { assert!(fs::metadata(&pkg_readme_path).is_ok()); - let crate_readme = utils::readme::read_file(&crate_readme_path).unwrap(); - let pkg_readme = utils::readme::read_file(&pkg_readme_path).unwrap(); + let crate_readme = utils::file::read_file(&crate_readme_path).unwrap(); + let pkg_readme = utils::file::read_file(&pkg_readme_path).unwrap(); assert_eq!(crate_readme, pkg_readme); } #[test] fn it_creates_a_package_json_provided_path() { - let fixture = utils::fixture("tests/fixtures/js-hello-world"); + let fixture = fixture::fixture("tests/fixtures/js-hello-world"); fs::create_dir(fixture.path.join("pkg")).expect("should create pkg directory OK"); let step = wasm_pack::progressbar::Step::new(1); @@ -47,7 +47,7 @@ fn it_creates_a_package_json_provided_path() { assert!(fs::metadata(&crate_readme_path).is_ok()); assert!(fs::metadata(&pkg_readme_path).is_ok()); - let crate_readme = utils::readme::read_file(&crate_readme_path).unwrap(); - let pkg_readme = utils::readme::read_file(&pkg_readme_path).unwrap(); + let crate_readme = utils::file::read_file(&crate_readme_path).unwrap(); + let pkg_readme = utils::file::read_file(&pkg_readme_path).unwrap(); assert_eq!(crate_readme, pkg_readme); } diff --git a/tests/all/utils/readme.rs b/tests/all/utils/file.rs similarity index 100% rename from tests/all/utils/readme.rs rename to tests/all/utils/file.rs diff --git a/tests/all/utils/fixture.rs b/tests/all/utils/fixture.rs new file mode 100644 index 0000000..e40b9c1 --- /dev/null +++ b/tests/all/utils/fixture.rs @@ -0,0 +1,33 @@ +use std::path::{Path, PathBuf}; + +use copy_dir::copy_dir; +use tempfile; + +pub struct Fixture { + pub dir: tempfile::TempDir, + pub path: PathBuf, +} + +/// Copy the given fixture into a unique temporary directory. This allows the +/// test to mutate the copied fixture without messing up other tests that are +/// also trying to read from or write to that fixture. The given path should be +/// relative from the root of the repository, eg +/// "tests/fixtures/im-from-brooklyn-the-place-where-stars-are-born". +pub fn fixture

(fixture: P) -> Fixture +where + P: AsRef, +{ + let fixture = fixture + .as_ref() + .canonicalize() + .expect("should canonicalize fixture path OK"); + let dir = tempfile::tempdir().expect("should create temporary directory OK"); + let path = dir.path().join("wasm-pack"); + println!( + "wasm-pack: copying test fixture '{}' to temporary directory '{}'", + fixture.display(), + path.display() + ); + copy_dir(fixture, &path).expect("should copy fixture directory into temporary directory OK"); + Fixture { dir, path } +} diff --git a/tests/all/utils/mod.rs b/tests/all/utils/mod.rs index d97bdcc..8b4244f 100644 --- a/tests/all/utils/mod.rs +++ b/tests/all/utils/mod.rs @@ -1,36 +1,3 @@ -use std::path::{Path, PathBuf}; - -use copy_dir::copy_dir; -use tempfile; - -pub(crate) mod manifest; -pub(crate) mod readme; - -pub struct Fixture { - pub dir: tempfile::TempDir, - pub path: PathBuf, -} - -/// Copy the given fixture into a unique temporary directory. This allows the -/// test to mutate the copied fixture without messing up other tests that are -/// also trying to read from or write to that fixture. The given path should be -/// relative from the root of the repository, eg -/// "tests/fixtures/im-from-brooklyn-the-place-where-stars-are-born". -pub fn fixture

(fixture: P) -> Fixture -where - P: AsRef, -{ - let fixture = fixture - .as_ref() - .canonicalize() - .expect("should canonicalize fixture path OK"); - let dir = tempfile::tempdir().expect("should create temporary directory OK"); - let path = dir.path().join("wasm-pack"); - println!( - "wasm-pack: copying test fixture '{}' to temporary directory '{}'", - fixture.display(), - path.display() - ); - copy_dir(fixture, &path).expect("should copy fixture directory into temporary directory OK"); - Fixture { dir, path } -} +pub mod file; +pub mod fixture; +pub mod manifest;