Skip to content

Commit

Permalink
Merge pull request #224 from rustwasm/fix-depcheck
Browse files Browse the repository at this point in the history
fix(depcheck): don't fail on dep map
  • Loading branch information
ashleygwilliams authored Jul 25, 2018
2 parents dd30b88 + 5def20f commit 05e4743
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/manifest.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! Reading and writing Cargo.toml and package.json manifests.

use std::collections::HashMap;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
Expand All @@ -15,7 +16,7 @@ use PBAR;
#[derive(Deserialize)]
struct CargoManifest {
package: CargoPackage,
dependencies: Option<CargoDependencies>,
dependencies: Option<HashMap<String, CargoDependency>>,
lib: Option<CargoLib>,
}

Expand All @@ -30,11 +31,15 @@ struct CargoPackage {
}

#[derive(Deserialize)]
struct CargoDependencies {
#[serde(rename = "wasm-bindgen")]
wasm_bindgen: Option<String>,
#[serde(untagged)]
enum CargoDependency {
Simple(String),
Detailed(DetailedCargoDependency),
}

#[derive(Deserialize)]
struct DetailedCargoDependency {}

#[derive(Deserialize)]
struct CargoLib {
#[serde(rename = "crate-type")]
Expand Down Expand Up @@ -177,9 +182,11 @@ pub fn check_crate_config(path: &Path, step: &Step) -> Result<(), Error> {
}

fn check_wasm_bindgen(path: &Path) -> Result<(), Error> {
if read_cargo_toml(path)?.dependencies.map_or(false, |x| {
!x.wasm_bindgen.unwrap_or("".to_string()).is_empty()
}) {
let cargo_toml = read_cargo_toml(path)?;
if cargo_toml
.dependencies
.map_or(false, |deps| deps.contains_key("wasm-bindgen"))
{
return Ok(());
}
Error::crate_config(&format!(
Expand Down
14 changes: 14 additions & 0 deletions tests/fixtures/serde-feature/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "serde-serialize"
description = "an example rust->wasm crate"
version = "0.1.0"
authors = ["Ashley Williams <ashley666ashley@gmail.com>"]
license = "WTFPL"
repository = "https://github.com/ashleygwilliams/wasm-pack"

[lib]
crate-type = ["cdylib"]

[dependencies.wasm-bindgen]
version = "^0.2"
features = ["serde-serialize"]
2 changes: 2 additions & 0 deletions tests/fixtures/serde-feature/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# js-hello-world
> an example rust -> wasm project
15 changes: 15 additions & 0 deletions tests/fixtures/serde-feature/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#![feature(proc_macro, wasm_import_module, wasm_custom_section)]

extern crate wasm_bindgen;

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern {
fn alert(s: &str);
}

#[wasm_bindgen]
pub fn greet(name: &str) {
alert(&format!("Hello, {}!", name));
}
8 changes: 8 additions & 0 deletions tests/manifest/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ fn it_checks_has_cdylib_wrong_crate_type() {
);
}

#[test]
fn it_recognizes_a_map_during_depcheck() {
let step = wasm_pack::progressbar::Step::new(1);
assert!(
manifest::check_crate_config(&PathBuf::from("tests/fixtures/serde-feature"), &step).is_ok()
);
}

#[test]
fn it_creates_a_package_json_default_path() {
let step = wasm_pack::progressbar::Step::new(1);
Expand Down

0 comments on commit 05e4743

Please sign in to comment.