@ 261012.1
current
on:
  pull_request:
    branches: [master]
    paths:
      - wasm-mappings/**
      - .github/workflows/cargo.yml
  push:
    branches: [master]
  workflow_dispatch:

name: WASM tests

defaults:
  run:
    working-directory: ./wasm-mappings

jobs:
  build_and_test:
    name: WASM mappings
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain: [stable, beta, nightly]
        job: [test, bench, wasm]
        exclude:
          - toolchain: stable
            job: bench
          - toolchain: stable
            job: wasm
          - toolchain: beta
            job: bench
          - toolchain: beta
            job: wasm
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true
          default: true
      # `override: true` sets a directory override on the repo root, but the
      # nearer wasm-mappings/rust-toolchain.toml takes precedence over it, so
      # select the matrix toolchain explicitly.
      - run: JOB=${{ matrix.job }} ./ci/script.sh
        env:
          RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}

  dist:
    name: WASM binary is reproducible
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      # No toolchain override here on purpose: the build must use the version
      # pinned in wasm-mappings/rust-toolchain.toml for the byte comparison
      # to be meaningful.
      # wasm-pack vendors its own wasm-bindgen; wasm-opt must be the binaryen
      # version build.sh pins, since wasm-pack's fallback download is older
      # and produces different bytes.
      - name: Install wasm-pack
        env:
          WASM_PACK_VERSION: v0.15.0
          WASM_PACK_SHA256: c09f971ecaed9a2efc80fdcea7a00ef6b53c7fadc8c57d1f61b53a6aa66b668a
        run: |
          name="wasm-pack-${WASM_PACK_VERSION}-x86_64-unknown-linux-musl"
          curl -sSfL -o "$RUNNER_TEMP/wasm-pack.tar.gz" \
            "https://github.com/rustwasm/wasm-pack/releases/download/${WASM_PACK_VERSION}/${name}.tar.gz"
          echo "${WASM_PACK_SHA256}  $RUNNER_TEMP/wasm-pack.tar.gz" | sha256sum -c -
          tar -xzf "$RUNNER_TEMP/wasm-pack.tar.gz" -C "$RUNNER_TEMP"
          echo "$RUNNER_TEMP/${name}" >> "$GITHUB_PATH"
      - name: Install binaryen
        env:
          BINARYEN_VERSION: "132"
          BINARYEN_SHA256: 195ddc94f9bc89f45abdabb0b9eea86023d727ba90eac8b35b80f2544fc30572
        run: |
          curl -sSfL -o "$RUNNER_TEMP/binaryen.tar.gz" \
            "https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VERSION}/binaryen-version_${BINARYEN_VERSION}-x86_64-linux.tar.gz"
          echo "${BINARYEN_SHA256}  $RUNNER_TEMP/binaryen.tar.gz" | sha256sum -c -
          tar -xzf "$RUNNER_TEMP/binaryen.tar.gz" -C "$RUNNER_TEMP"
          echo "$RUNNER_TEMP/binaryen-version_${BINARYEN_VERSION}/bin" >> "$GITHUB_PATH"
      - run: JOB=wasm-dist ./ci/script.sh