Skip to content

Improve CI for web targets #108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Sep 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cargo/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[target.wasm32-unknown-unknown]
runner = 'wasm-bindgen-test-runner'

[target.wasm32-wasi]
runner = 'wasmtime'
57 changes: 37 additions & 20 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,34 +29,51 @@ matrix:

- name: "WASM via emscripten, stdweb, wasm-bindgen and WASI"
rust: nightly
addons:
firefox: 69.0
chrome: stable
install:
- rustup target add wasm32-unknown-unknown
- rustup target add wasm32-unknown-emscripten
- rustup target add asmjs-unknown-emscripten
- rustup target add wasm32-wasi
- nvm install 9
- ./utils/ci/install_cargo_web.sh
# Get geckodriver
- wget -O geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.25.0/geckodriver-v0.25.0-linux64.tar.gz
- tar -xzf geckodriver.tar.gz
# Get chromedirver (we cannot pin chrome version, so don't pin chromedriver version)
- export VERSION=$(wget -q -O - https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
- wget -O chromedriver.zip https://chromedriver.storage.googleapis.com/$VERSION/chromedriver_linux64.zip
- unzip chromedriver.zip
# Get cargo-web
- wget -O cargo-web.gz https://github.com/koute/cargo-web/releases/download/0.6.26/cargo-web-x86_64-unknown-linux-gnu.gz
- gunzip cargo-web.gz
- chmod +x cargo-web
# Get wasmtime
- wget -O wasmtime.tar.xz https://github.com/CraneStation/wasmtime/releases/download/v0.3.0/wasmtime-v0.3.0-x86_64-linux.tar.xz
- tar -xf wasmtime.tar.xz --strip-components=1
# Get wasm-bindgen-test-runner
- wget -O wasm-bindgen.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/0.2.50/wasm-bindgen-0.2.50-x86_64-unknown-linux-musl.tar.gz
- tar -xzf wasm-bindgen.tar.gz --strip-components=1
# Place the runner binaries in our PATH
- mv cargo-web wasmtime wasm-bindgen-test-runner $HOME/.cargo/bin
# Download and setup emscripten
- 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 wasm-pack
addons:
chrome: stable
env: EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0"
script:
# Testing wasm32-unknown-emscripten fails because of rust-lang/rust#49877
# We cannot run emscripten test binaries (see rust-lang/rust#63649).
# However, we can still build and link all tests to make sure that works.
# This is actually useful as it finds stuff such as rust-random/rand#669
- EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" cargo web test --target wasm32-unknown-emscripten --no-run
#- cargo web test --target wasm32-unknown-emscripten
#- cargo web test --nodejs --target wasm32-unknown-emscripten
#- cargo build --target wasm32-unknown-unknown # without any features
- cargo build --target wasm32-wasi
- cargo build --target wasm32-unknown-unknown
- 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-bindgen --nodejs target/wasm32-unknown-unknown/debug/getrandom_wasm_bindgen_test.wasm --out-dir tests/wasm_bindgen/js
- node tests/wasm_bindgen/js/index.js
- wasm-pack test --node tests/wasm_bindgen
- cargo web test --target wasm32-unknown-emscripten --no-run
- cargo web test --target asmjs-unknown-emscripten --no-run
# wasi tests
- cargo test --target wasm32-wasi
# stdweb tests (Node, Chrome)
- cargo web test --nodejs --target=wasm32-unknown-unknown --features=stdweb
- cargo web test --target=wasm32-unknown-unknown --features=stdweb
# wasm-bindgen tests (Node, Firefox, Chrome)
- cargo test --target wasm32-unknown-unknown --features=wasm-bindgen
- GECKODRIVER=$PWD/geckodriver cargo test --target wasm32-unknown-unknown --features=test-in-browser
- CHROMEDRIVER=$PWD/chromedriver cargo test --target wasm32-unknown-unknown --features=test-in-browser

- name: "Linux, nightly, docs"
rust: nightly
Expand Down
8 changes: 5 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ exclude = ["utils/*", ".*", "appveyor.yml"]
travis-ci = { repository = "rust-random/getrandom" }
appveyor = { repository = "rust-random/getrandom" }

[workspace]
members = ["tests/wasm_bindgen"]

[dependencies]
log = { version = "0.4", optional = true }
cfg-if = "0.1"
Expand All @@ -35,9 +32,14 @@ wasi = "0.7"
wasm-bindgen = { version = "0.2.29", optional = true }
stdweb = { version = "0.4.18", optional = true }

[target.wasm32-unknown-unknown.dev-dependencies]
wasm-bindgen-test = "0.2"

[features]
std = []
# Enables dummy implementation for unsupported targets
dummy = []
# Unstable feature to support being a libstd dependency
rustc-dep-of-std = ["compiler_builtins", "core"]
# Unstable feature for testing
test-in-browser = ["wasm-bindgen"]
9 changes: 8 additions & 1 deletion tests/mod.rs → tests/common.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
extern crate getrandom;
#[cfg(feature = "wasm-bindgen")]
use wasm_bindgen_test::*;

use getrandom::getrandom;

#[cfg(feature = "test-in-browser")]
wasm_bindgen_test_configure!(run_in_browser);

#[cfg_attr(feature = "wasm-bindgen", wasm_bindgen_test)]
#[test]
fn test_zero() {
// Test that APIs are happy with zero-length requests
getrandom(&mut [0u8; 0]).unwrap();
}

#[cfg_attr(feature = "wasm-bindgen", wasm_bindgen_test)]
#[test]
fn test_diff() {
let mut v1 = [0u8; 1000];
Expand All @@ -25,6 +31,7 @@ fn test_diff() {
assert!(n_diff_bits >= v1.len() as u32);
}

#[cfg_attr(feature = "wasm-bindgen", wasm_bindgen_test)]
#[test]
fn test_huge() {
let mut huge = [0u8; 100_000];
Expand Down
15 changes: 0 additions & 15 deletions tests/wasm_bindgen/Cargo.toml

This file was deleted.

5 changes: 0 additions & 5 deletions tests/wasm_bindgen/js/index.js

This file was deleted.

55 changes: 0 additions & 55 deletions tests/wasm_bindgen/src/lib.rs

This file was deleted.

15 changes: 0 additions & 15 deletions utils/ci/install_cargo_web.sh

This file was deleted.