Run tests on the WASM package as part of the GitHub workflow #2503
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
pull_request: | |
paths: | |
- "benchmarks/**" | |
- "ironfish-mpc/**" | |
- "ironfish-phase2/**" | |
- "ironfish-rust/**" | |
- "ironfish-rust-nodejs/**" | |
- "ironfish-rust-wasm/**" | |
- "ironfish-zkp/**" | |
- "rust-toolchain" | |
- ".github/workflows/rust*" | |
- ".cargo/**" | |
- "Cargo*" | |
push: | |
branches: | |
- master | |
paths: | |
- "benchmarks/**" | |
- "ironfish-mpc/**" | |
- "ironfish-phase2/**" | |
- "ironfish-rust/**" | |
- "ironfish-rust-nodejs/**" | |
- "ironfish-rust-wasm/**" | |
- "ironfish-zkp/**" | |
- "rust-toolchain" | |
- ".github/workflows/rust*" | |
- ".cargo/**" | |
- "Cargo*" | |
name: Rust CI | |
jobs: | |
rust_lint: | |
name: Lint Rust | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: false | |
shared-key: base | |
# Note: ironfish-zkp is does not need this due to different licensing | |
- name: Check for license headers for ironfish-rust | |
run: ./ci/lintHeaders.sh ./ironfish-rust/src *.rs | |
- name: Check for license headers for ironfish-rust-nodejs | |
run: ./ci/lintHeaders.sh ./ironfish-rust-nodejs/src *.rs | |
- name: Check for license headers for ironfish-rust-wasm | |
run: ./ci/lintHeaders.sh ./ironfish-rust-wasm/src *.rs | |
- name: cargo fmt | |
run: | | |
cargo fmt --all -- --check | |
- name: cargo clippy | |
run: | | |
cargo clippy --all-targets --all-features -- -D warnings | |
cargo_check: | |
name: Check Rust | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: false | |
shared-key: base | |
- name: Install cargo-all-features | |
run: | | |
cargo install --locked cargo-all-features | |
- name: Check that cargo lockfile is up to date | |
run: | | |
cargo check-all-features --locked --all-targets | |
cargo_vet: | |
name: Vet Dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
save-if: false | |
shared-key: base | |
- name: Install cargo-vet | |
run: | | |
cargo install --locked cargo-vet | |
- name: Vet dependencies | |
run: | | |
cargo vet | |
ironfish_rust: | |
name: Test ironfish-rust | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
shard: [1/2, 2/2] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: base | |
# Run tests to collect code coverage | |
- name: Run tests | |
run: | | |
cargo llvm-cov nextest \ | |
--no-clean \ | |
--codecov \ | |
--output-path codecov.json \ | |
--package ironfish \ | |
--release \ | |
--partition count:${{ matrix.shard }} | |
# Upload code coverage to Codecov | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
flags: ironfish-rust | |
ironfish_rust_no_default_features: | |
name: Test ironfish-rust (no default features) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
shard: [1/2, 2/2] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: base | |
- name: Run tests | |
run: | | |
cargo nextest run \ | |
--package ironfish \ | |
--release \ | |
--no-default-features \ | |
--partition count:${{ matrix.shard }} | |
ironfish_rust_all_features: | |
name: Test ironfish-rust (all features) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
shard: [1/2, 2/2] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: base | |
- name: Run tests (all features) | |
run: | | |
cargo nextest run \ | |
--package ironfish \ | |
--release \ | |
--all-features \ | |
--partition count:${{ matrix.shard }} | |
ironfish_zkp: | |
name: Test ironfish-zkp | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: zkp | |
# Run tests to collect code coverage | |
- name: Run tests | |
run: | | |
cargo llvm-cov nextest \ | |
--no-clean \ | |
--codecov \ | |
--output-path codecov.json \ | |
--package ironfish_zkp \ | |
--release | |
# Upload code coverage to Codecov | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
flags: ironfish-zkp | |
ironfish_wasm: | |
name: Test ironfish-rust-wasm | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: wasm | |
- name: Install wasm-pack | |
# use the installation method reccommended on | |
# https://rustwasm.github.io/docs/wasm-bindgen/wasm-bindgen-test/continuous-integration.html#github-actions | |
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
- name: Run tests in Firefox | |
run: | | |
cd ironfish-rust-wasm | |
wasm-pack test --headless --firefox | |
- name: Run tests in Chrome | |
run: | | |
cd ironfish-rust-wasm | |
wasm-pack test --headless --chrome |