name: Test
on:
- push
- pull_request
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest]
rust-version: [1.33.0, stable, nightly]
mode: [native]
include:
- os: macos-latest
rust-version: 1.33.0
mode: native
- os: windows-latest
rust-version: 1.33.0
mode: native
- os: ubuntu-latest
rust-version: stable
mode: wasm
runs-on: ${{ matrix.os }}
env:
TARGET: ""
steps:
- uses: actions/checkout@v2
- name: Set up Rust ${{ matrix.rust-version }}
uses: actions-rs/toolchain@v1
id: rustup
with:
toolchain: ${{ matrix.rust-version }}
override: true
- name: Cache wasm binaries
if: matrix.mode == 'wasm'
uses: actions/cache@v2
id: wasm-binaries
with:
path: |
~/.cargo/bin
~/.cargo/.crates.toml
~/.cargo/.crates2.json
key: rust-${{ steps.rustup.outputs.rustc_hash }}-bindgen-0.2.63-pack-0.9.1
- name: Set up wasm
if: matrix.mode == 'wasm'
run: |
rustup target add wasm32-unknown-unknown
echo "::set-env name=TARGET::--target wasm32-unknown-unknown"
cargo install --version 0.2.63 wasm-bindgen-cli
cargo install --version 0.9.1 wasm-pack
- name: Build
run: cargo build --verbose $TARGET
- name: Disable benchmarking dependencies
if: matrix.mode != 'native' || matrix.rust-version != 'stable'
run: "mv Cargo.toml Cargo.toml.bak && sed '/ # benchmark only$/d' Cargo.toml.bak > Cargo.toml"
- name: Run tests
if: matrix.mode == 'native'
run: cargo test --verbose
- name: Test benchmarks
if: matrix.mode == 'native' && matrix.rust-version == 'stable'
run: cargo test --benches --verbose
- name: Run wasm tests
if: matrix.mode == 'wasm'
run: wasm-pack test --node
- name: Build doc
if: matrix.mode == 'native'
run: cargo doc