From 143ce67e7221346b57aafafd1c0f7c35af467676 Mon Sep 17 00:00:00 2001 From: Joe Richey Date: Sat, 25 Apr 2020 02:16:09 -0700 Subject: [PATCH] travis: Fix wasm32 CI Split emscripten stuff into its own target and stop relying on cargo web to download/manage then emscripten toolchain. We can just get it ourselves. We also now run the emscripten tests. Signed-off-by: Joe Richey --- .travis.yml | 32 ++++++++++++++++++++------------ tests/common.rs | 3 ++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4c8f14a2..8657c913 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,15 +27,13 @@ matrix: - name: "Linux, beta" rust: beta - - name: "WASM via emscripten, stdweb, wasm-bindgen and WASI" - rust: nightly + - name: "WASM via stdweb, wasm-bindgen and WASI" + rust: stable addons: firefox: latest 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 # Get latest geckodriver - export VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r ".tag_name") @@ -60,15 +58,7 @@ matrix: - 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 - env: EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" script: - # 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 - - 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) @@ -79,6 +69,24 @@ matrix: - 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: "WASM via Emscripten" + rust: stable + env: + - CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=node + - CARGO_TARGET_ASMJS_UNKNOWN_EMSCRIPTEN_RUNNER=node + install: + - rustup target add wasm32-unknown-emscripten + - rustup target add asmjs-unknown-emscripten + - export VERSION=1.39.13 # Pin version for stability + - git clone https://github.com/emscripten-core/emsdk.git + - ./emsdk/emsdk install $VERSION + - ./emsdk/emsdk activate $VERSION + - source ./emsdk/emsdk_env.sh + script: + - cargo test --target wasm32-unknown-emscripten + # Prevent 'wasm2js does not support source maps yet' error. + - RUSTFLAGS='-C debuginfo=0' cargo test --target asmjs-unknown-emscripten + - name: "Linux, nightly, docs" rust: nightly os: linux diff --git a/tests/common.rs b/tests/common.rs index afefa031..afb89a9f 100644 --- a/tests/common.rs +++ b/tests/common.rs @@ -38,7 +38,8 @@ fn test_huge() { getrandom(&mut huge).unwrap(); } -#[cfg(any(unix, windows, target_os = "redox", target_os = "fuchsia"))] +// On WASM, the thread API always fails/panics +#[cfg(not(target_arch = "wasm32"))] #[test] fn test_multithreading() { use std::sync::mpsc::channel;