name: CI

on:
    pull_request: {}
    push:
        branches:
            - main

env:
    RUSTFLAGS: '-Dwarnings'

jobs:
    test:
        name: Test
        runs-on: ubuntu-latest

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Set up Rust toolchain
              run: rustup toolchain install nightly --no-self-update --profile default --target wasm32-unknown-unknown

            - name: Set up Rust cache
              uses: swatinem/rust-cache@v2
              with:
                  cache-on-failure: true
                  save-if: ${{ github.ref == 'refs/heads/main' }}

            - name: Check formatting
              run: cargo fmt --all --check

            - name: Lint
              run: cargo clippy --all-features

            - name: Test
              run: cargo test --all-features
