From 23c47fdcd6ef904644882e3d3778fcbc861c7dd1 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Sat, 12 Jan 2019 14:07:40 +0000 Subject: [PATCH 01/16] Add minimal wasm-bindgen test crate --- .travis.yml | 3 +++ Cargo.toml | 1 + tests/wasm_bindgen/Cargo.toml | 13 +++++++++++++ tests/wasm_bindgen/src/lib.rs | 23 +++++++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 tests/wasm_bindgen/Cargo.toml create mode 100644 tests/wasm_bindgen/src/lib.rs diff --git a/.travis.yml b/.travis.yml index b41e68172f7..4db45650673 100644 --- a/.travis.yml +++ b/.travis.yml @@ -139,6 +139,7 @@ matrix: - ./utils/ci/install_cargo_web.sh - cargo web prepare-emscripten - cargo web -V + - cargo install wasm-pack addons: chrome: stable script: @@ -151,6 +152,8 @@ matrix: #- cargo build --target wasm32-unknown-unknown # without any features - cargo build --target wasm32-unknown-unknown --features=wasm-bindgen - cargo web test --target wasm32-unknown-unknown --features=stdweb + - cargo build --manifest-path tests/wasm_bindgen --target wasm32-unknown-unknown + - wasm-pack test --node tests/wasm_bindgen - rust: nightly env: DESCRIPTION="cross-platform builder (doesn't run tests)" diff --git a/Cargo.toml b/Cargo.toml index d802d36ac4f..7f9fded16aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,6 +41,7 @@ members = [ "rand_pcg", "rand_xorshift", "rand_xoshiro", + "tests/wasm_bindgen", ] [dependencies] diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml new file mode 100644 index 00000000000..479dd3c1389 --- /dev/null +++ b/tests/wasm_bindgen/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "rand_wasm_bindgen_test" +description = "Minimal crate to test that rand can be build for web assembly target" +version = "0.1.0" +authors = ["The Rand Project Developers", "The Rust Project Developers"] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +rand = { path = "../.." } +wasm-bindgen = "0.2" +wasm-bindgen-test = "0.2" diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs new file mode 100644 index 00000000000..65f9a3ddb9f --- /dev/null +++ b/tests/wasm_bindgen/src/lib.rs @@ -0,0 +1,23 @@ +extern crate rand; +extern crate wasm_bindgen; +extern crate wasm_bindgen_test; + +use rand::rngs::StdRng; +use rand::Rng; +use rand::SeedableRng; +use wasm_bindgen::prelude::*; +use wasm_bindgen_test::*; + +#[wasm_bindgen] +pub fn generate_from_seed(seed: u64) -> u64 { + StdRng::seed_from_u64(seed).gen() +} + +pub mod tests { + use super::*; + + #[wasm_bindgen_test] + fn generate_from_seed_test() { + let _ = generate_from_seed(42); + } +} From a6ad1be81c9e65743d4edc43c0f1a93b6cee16b5 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Tue, 15 Jan 2019 22:27:42 +0000 Subject: [PATCH 02/16] Fix manifest path in travis config --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4db45650673..8706fc459d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -152,7 +152,7 @@ matrix: #- cargo build --target wasm32-unknown-unknown # without any features - cargo build --target wasm32-unknown-unknown --features=wasm-bindgen - cargo web test --target wasm32-unknown-unknown --features=stdweb - - cargo build --manifest-path tests/wasm_bindgen --target wasm32-unknown-unknown + - cargo build --manifest-path tests/wasm_bindgen/Cargo.toml --target wasm32-unknown-unknown - wasm-pack test --node tests/wasm_bindgen - rust: nightly From 86f2185ed9116cfe08e08c2930bf035483e69f5c Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Tue, 15 Jan 2019 22:42:30 +0000 Subject: [PATCH 03/16] Use u32 instead of u64 in wasm_bindgen test interface --- tests/wasm_bindgen/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index 65f9a3ddb9f..855582b7a60 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -9,8 +9,8 @@ use wasm_bindgen::prelude::*; use wasm_bindgen_test::*; #[wasm_bindgen] -pub fn generate_from_seed(seed: u64) -> u64 { - StdRng::seed_from_u64(seed).gen() +pub fn generate_from_seed(seed: u32) -> u32 { + StdRng::seed_from_u64(seed as u64).gen() } pub mod tests { From caf940725ea02e6bbb225e7055fd94116d12d52e Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 20:16:42 +0000 Subject: [PATCH 04/16] Install wasm-pack dependency with cargo-update --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8706fc459d0..3d3dac21fac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -139,7 +139,8 @@ matrix: - ./utils/ci/install_cargo_web.sh - cargo web prepare-emscripten - cargo web -V - - cargo install wasm-pack + - cargo list | grep install-update || cargo install -f cargo-update + - cargo install-update -i cargo-update wasm-pack addons: chrome: stable script: From a6d35ebfda390d8b4290c9e80b2ad1638f645b5a Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 20:17:51 +0000 Subject: [PATCH 05/16] Fix manifest in wasm_bindgen test --- tests/wasm_bindgen/Cargo.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml index 479dd3c1389..dc4c94f0996 100644 --- a/tests/wasm_bindgen/Cargo.toml +++ b/tests/wasm_bindgen/Cargo.toml @@ -2,7 +2,9 @@ name = "rand_wasm_bindgen_test" description = "Minimal crate to test that rand can be build for web assembly target" version = "0.1.0" -authors = ["The Rand Project Developers", "The Rust Project Developers"] +authors = ["The Rand Project Developers"] +publish = false +license = "MIT/Apache-2.0" [lib] crate-type = ["cdylib"] From 9531ce8314b97c57d4fbbb88bbb85e11f6019172 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 20:23:02 +0000 Subject: [PATCH 06/16] Minor refactor of wasm bindgen test --- tests/wasm_bindgen/src/lib.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index 855582b7a60..a56aba71089 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -6,7 +6,6 @@ use rand::rngs::StdRng; use rand::Rng; use rand::SeedableRng; use wasm_bindgen::prelude::*; -use wasm_bindgen_test::*; #[wasm_bindgen] pub fn generate_from_seed(seed: u32) -> u32 { @@ -14,10 +13,10 @@ pub fn generate_from_seed(seed: u32) -> u32 { } pub mod tests { - use super::*; + use wasm_bindgen_test::*; #[wasm_bindgen_test] - fn generate_from_seed_test() { - let _ = generate_from_seed(42); + fn generate_from_seed() { + let _ = super::generate_from_seed(42); } } From 9a72dd9d90a26f706ff9fe206e74853ef9165ed4 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:09:28 +0000 Subject: [PATCH 07/16] Add test of entropy and os to wasm_bindgen test --- tests/wasm_bindgen/Cargo.toml | 2 +- tests/wasm_bindgen/src/lib.rs | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml index dc4c94f0996..b96f09bb6f2 100644 --- a/tests/wasm_bindgen/Cargo.toml +++ b/tests/wasm_bindgen/Cargo.toml @@ -10,6 +10,6 @@ license = "MIT/Apache-2.0" crate-type = ["cdylib"] [dependencies] -rand = { path = "../.." } +rand = { path = "../..", features = ["wasm-bindgen"] } wasm-bindgen = "0.2" wasm-bindgen-test = "0.2" diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index a56aba71089..52c241e8b7b 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -2,16 +2,26 @@ extern crate rand; extern crate wasm_bindgen; extern crate wasm_bindgen_test; -use rand::rngs::StdRng; -use rand::Rng; -use rand::SeedableRng; +use rand::rngs::{OsRng, StdRng}; +use rand::FromEntropy; +use rand::{Rng, RngCore, SeedableRng}; use wasm_bindgen::prelude::*; #[wasm_bindgen] -pub fn generate_from_seed(seed: u32) -> u32 { +pub fn generate_from_seed(seed: u32) -> i32 { StdRng::seed_from_u64(seed as u64).gen() } +#[wasm_bindgen] +pub fn generate_from_os_rand() -> i32 { + OsRng::new().unwrap().gen() +} + +#[wasm_bindgen] +pub fn generate_from_entropy() -> i32 { + StdRng::from_entropy().gen() +} + pub mod tests { use wasm_bindgen_test::*; From d1bc7ca387644ed7812d4d57c7f262501c94bfb8 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:10:23 +0000 Subject: [PATCH 08/16] Switch to running wasm_webkack test with nodejs script --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3d3dac21fac..d730c3531ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -140,7 +140,7 @@ matrix: - cargo web prepare-emscripten - cargo web -V - cargo list | grep install-update || cargo install -f cargo-update - - cargo install-update -i cargo-update wasm-pack + - cargo install-update -i cargo-update wasm-bindgen addons: chrome: stable script: @@ -154,7 +154,8 @@ matrix: - cargo build --target wasm32-unknown-unknown --features=wasm-bindgen - cargo web test --target wasm32-unknown-unknown --features=stdweb - cargo build --manifest-path tests/wasm_bindgen/Cargo.toml --target wasm32-unknown-unknown - - wasm-pack test --node tests/wasm_bindgen + - wasm-bindgen --nodejs target/wasm32-unknown-unknown/debug/rand_wasm_bindgen_test.wasm --out-dir tests/wasm_bindgen/js + - node tests/wasm_bindgen/js/index.js - rust: nightly env: DESCRIPTION="cross-platform builder (doesn't run tests)" From ab93ff04412e59977835bbb4857d70dffe76db7a Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:11:10 +0000 Subject: [PATCH 09/16] Add wasm-bindgen-test to dev-dependencies according to docs --- tests/wasm_bindgen/Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml index b96f09bb6f2..23900511f05 100644 --- a/tests/wasm_bindgen/Cargo.toml +++ b/tests/wasm_bindgen/Cargo.toml @@ -13,3 +13,6 @@ crate-type = ["cdylib"] rand = { path = "../..", features = ["wasm-bindgen"] } wasm-bindgen = "0.2" wasm-bindgen-test = "0.2" + +[dev-dependencies] +wasm-bindgen-test = "0.2" From fbded9c70bd91e7a96aca7bc7b72bfb7d4f8a65c Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:13:50 +0000 Subject: [PATCH 10/16] Remove wasm-bindgen-test Instead, tests are conducted by running a small js script which requires the wasm module built from the test library. I removed wasm-bindgen-test because it failed to link the test module when OsRand or StdRng::from_entropy were used, despite the library working when required by js script. --- tests/wasm_bindgen/Cargo.toml | 4 ---- tests/wasm_bindgen/src/lib.rs | 10 ---------- 2 files changed, 14 deletions(-) diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml index 23900511f05..8fdc1baa2cd 100644 --- a/tests/wasm_bindgen/Cargo.toml +++ b/tests/wasm_bindgen/Cargo.toml @@ -12,7 +12,3 @@ crate-type = ["cdylib"] [dependencies] rand = { path = "../..", features = ["wasm-bindgen"] } wasm-bindgen = "0.2" -wasm-bindgen-test = "0.2" - -[dev-dependencies] -wasm-bindgen-test = "0.2" diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index 52c241e8b7b..611ec5ef371 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -1,6 +1,5 @@ extern crate rand; extern crate wasm_bindgen; -extern crate wasm_bindgen_test; use rand::rngs::{OsRng, StdRng}; use rand::FromEntropy; @@ -21,12 +20,3 @@ pub fn generate_from_os_rand() -> i32 { pub fn generate_from_entropy() -> i32 { StdRng::from_entropy().gen() } - -pub mod tests { - use wasm_bindgen_test::*; - - #[wasm_bindgen_test] - fn generate_from_seed() { - let _ = super::generate_from_seed(42); - } -} From 6044d07b23b560514c5d19fa974d3b35ea339f81 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:16:21 +0000 Subject: [PATCH 11/16] Add js script to test wasm bindgen --- tests/wasm_bindgen/js/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tests/wasm_bindgen/js/index.js diff --git a/tests/wasm_bindgen/js/index.js b/tests/wasm_bindgen/js/index.js new file mode 100644 index 00000000000..c3ba4966ac3 --- /dev/null +++ b/tests/wasm_bindgen/js/index.js @@ -0,0 +1,7 @@ +'use strict'; + +const rand_wasm_bindgen_test = require('./rand_wasm_bindgen_test'); + +console.log(rand_wasm_bindgen_test.generate_from_entropy()) +console.log(rand_wasm_bindgen_test.generate_from_os_rand()) +console.log(rand_wasm_bindgen_test.generate_from_seed()) From d351c5fef5bfdb4afbefbd7a609224cb39048eec Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:23:57 +0000 Subject: [PATCH 12/16] Remove unused RngCore --- tests/wasm_bindgen/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index 611ec5ef371..f8f7907243b 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -3,7 +3,7 @@ extern crate wasm_bindgen; use rand::rngs::{OsRng, StdRng}; use rand::FromEntropy; -use rand::{Rng, RngCore, SeedableRng}; +use rand::{Rng, SeedableRng}; use wasm_bindgen::prelude::*; #[wasm_bindgen] From 6775296568a4c5e6708be94ca374329d096b2cc2 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:34:13 +0000 Subject: [PATCH 13/16] Add semicolons to js file in wasm bindgen test --- tests/wasm_bindgen/js/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/wasm_bindgen/js/index.js b/tests/wasm_bindgen/js/index.js index c3ba4966ac3..a02fb59b165 100644 --- a/tests/wasm_bindgen/js/index.js +++ b/tests/wasm_bindgen/js/index.js @@ -2,6 +2,6 @@ const rand_wasm_bindgen_test = require('./rand_wasm_bindgen_test'); -console.log(rand_wasm_bindgen_test.generate_from_entropy()) -console.log(rand_wasm_bindgen_test.generate_from_os_rand()) -console.log(rand_wasm_bindgen_test.generate_from_seed()) +console.log(rand_wasm_bindgen_test.generate_from_entropy()); +console.log(rand_wasm_bindgen_test.generate_from_os_rand()); +console.log(rand_wasm_bindgen_test.generate_from_seed()); From 1fbcb4546357f07f0bd50464f8e7520dd16a9bd4 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Wed, 16 Jan 2019 21:40:47 +0000 Subject: [PATCH 14/16] Correct wasm-bindgen-cli package name in travis config --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d730c3531ea..269b03346e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -140,7 +140,7 @@ matrix: - cargo web prepare-emscripten - cargo web -V - cargo list | grep install-update || cargo install -f cargo-update - - cargo install-update -i cargo-update wasm-bindgen + - cargo install-update -i cargo-update wasm-bindgen-cli addons: chrome: stable script: From 13dafd9212a533f852648c51d3c4798e98c7b827 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Fri, 18 Jan 2019 23:35:27 +0000 Subject: [PATCH 15/16] Re-add wasm-bindgen-test tests --- .travis.yml | 2 ++ tests/wasm_bindgen/Cargo.toml | 1 + tests/wasm_bindgen/src/lib.rs | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/.travis.yml b/.travis.yml index 253d6beac18..a77ec123768 100644 --- a/.travis.yml +++ b/.travis.yml @@ -144,6 +144,7 @@ matrix: - cargo web -V - cargo list | grep install-update || cargo install -f cargo-update - cargo install-update -i cargo-update wasm-bindgen-cli + - cargo install-update -i cargo-update wasm-pack addons: chrome: stable script: @@ -159,6 +160,7 @@ matrix: - cargo build --manifest-path tests/wasm_bindgen/Cargo.toml --target wasm32-unknown-unknown - wasm-bindgen --nodejs target/wasm32-unknown-unknown/debug/rand_wasm_bindgen_test.wasm --out-dir tests/wasm_bindgen/js - node tests/wasm_bindgen/js/index.js + - wasm-pack test --node tests/wasm_bindgen - rust: nightly env: DESCRIPTION="cross-platform builder (doesn't run tests)" diff --git a/tests/wasm_bindgen/Cargo.toml b/tests/wasm_bindgen/Cargo.toml index 8fdc1baa2cd..b96f09bb6f2 100644 --- a/tests/wasm_bindgen/Cargo.toml +++ b/tests/wasm_bindgen/Cargo.toml @@ -12,3 +12,4 @@ crate-type = ["cdylib"] [dependencies] rand = { path = "../..", features = ["wasm-bindgen"] } wasm-bindgen = "0.2" +wasm-bindgen-test = "0.2" diff --git a/tests/wasm_bindgen/src/lib.rs b/tests/wasm_bindgen/src/lib.rs index f8f7907243b..32b907dc7ed 100644 --- a/tests/wasm_bindgen/src/lib.rs +++ b/tests/wasm_bindgen/src/lib.rs @@ -1,5 +1,6 @@ extern crate rand; extern crate wasm_bindgen; +extern crate wasm_bindgen_test; use rand::rngs::{OsRng, StdRng}; use rand::FromEntropy; @@ -20,3 +21,22 @@ pub fn generate_from_os_rand() -> i32 { pub fn generate_from_entropy() -> i32 { StdRng::from_entropy().gen() } + +pub mod tests { + use wasm_bindgen_test::*; + + #[wasm_bindgen_test] + fn generate_from_seed() { + let _ = super::generate_from_seed(42); + } + + #[wasm_bindgen_test] + fn generate_from_os_rand() { + let _ = super::generate_from_os_rand(); + } + + #[wasm_bindgen_test] + fn generate_from_entropy() { + let _ = super::generate_from_entropy(); + } +} From ff5a700f9091a51c3f9191b1235b45da62063bec Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Sat, 19 Jan 2019 20:26:48 +0000 Subject: [PATCH 16/16] Remove unnecessary duplication in travis config --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a77ec123768..2360b235c53 100644 --- a/.travis.yml +++ b/.travis.yml @@ -143,8 +143,7 @@ matrix: - cargo web prepare-emscripten - cargo web -V - cargo list | grep install-update || cargo install -f cargo-update - - cargo install-update -i cargo-update wasm-bindgen-cli - - cargo install-update -i cargo-update wasm-pack + - cargo install-update -i cargo-update wasm-bindgen-cli wasm-pack addons: chrome: stable script: