name: "test"

on:
  pull_request:
    paths-ignore:
      - "**.md"
      - ".github/**"
      - "!.github/workflows/run-tests.yml"
      - "!.github/workflows/tests.yml"

concurrency:
  group: "${{ github.workflow }}-${{ github.ref }}"
  cancel-in-progress: true

jobs:
  aquavm:
    uses: ./.github/workflows/tests.yml
    with:
      ref: ${{ github.ref }}

  aquavm-benchmark:
    name: "aquavm"
    uses: ./.github/workflows/benchmark.yml
    with:
      ref: ${{ github.ref }}

  lints:
    runs-on: builder

    env:
      RUSTFLAGS: "-D warnings"
      RUSTC_WRAPPER: "sccache"

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

      - name: Setup Rust toolchain
        uses: dsherret/rust-toolchain-file@v1

      - name: Setup risczero
        uses: brndnmtthws/rust-action-cargo-binstall@v1
        with:
          packages: cargo-risczero

      - run: cargo risczero install

      - name: Setup cache
        uses: Swatinem/rust-cache@v2
        with:
          cache-directories: ~/.cache/sccache
          shared-key: aquavm
          save-if: false

      - name: Setup sccache
        uses: mozilla-actions/sccache-action@v0.0.3

      - name: Run cargo check
        run: cargo check

      - name: Run cargo clippy
        uses: giraffate/clippy-action@v1
        with:
          reporter: github-pr-review
          fail_on_error: true

      - name: Run cargo fmt
        uses: actions-rust-lang/rustfmt@v1
