Skip to content

Commit

Permalink
Merge pull request #231 from csmoe/utils
Browse files Browse the repository at this point in the history
Split utils into submods
  • Loading branch information
ashleygwilliams authored Jul 28, 2018
2 parents 7bad3e9 + 15fdec2 commit 425aefb
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 101 deletions.
16 changes: 8 additions & 8 deletions tests/all/manifest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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());
Expand All @@ -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!(
Expand All @@ -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());
Expand Down Expand Up @@ -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());
Expand All @@ -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());
}
14 changes: 7 additions & 7 deletions tests/all/readme.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
}
86 changes: 0 additions & 86 deletions tests/all/utils.rs

This file was deleted.

13 changes: 13 additions & 0 deletions tests/all/utils/file.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
use std::fs::File;
use std::io::Read;
use std::path::Path;

use failure::Error;

pub fn read_file(path: &Path) -> Result<String, Error> {
let mut file = File::open(path)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;

Ok(contents)
}
33 changes: 33 additions & 0 deletions tests/all/utils/fixture.rs
Original file line number Diff line number Diff line change
@@ -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<P>(fixture: P) -> Fixture
where
P: AsRef<Path>,
{
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 }
}
34 changes: 34 additions & 0 deletions tests/all/utils/manifest.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

use failure::Error;
use serde_json;

#[derive(Deserialize)]
pub struct NpmPackage {
pub name: String,
pub description: String,
pub version: String,
pub license: String,
pub repository: Repository,
pub files: Vec<String>,
pub main: String,
pub types: Option<String>,
}

#[derive(Deserialize)]
pub struct Repository {
#[serde(rename = "type")]
pub ty: String,
pub url: String,
}

pub fn read_package_json(path: &Path) -> Result<NpmPackage, Error> {
let manifest_path = path.join("pkg").join("package.json");
let mut pkg_file = File::open(manifest_path)?;
let mut pkg_contents = String::new();
pkg_file.read_to_string(&mut pkg_contents)?;

Ok(serde_json::from_str(&pkg_contents)?)
}
3 changes: 3 additions & 0 deletions tests/all/utils/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pub mod file;
pub mod fixture;
pub mod manifest;

0 comments on commit 425aefb

Please sign in to comment.