name: Run tests

on:
  pull_request:
    paths-ignore:
      - "**.md"

  push:
    branches:
      - "main"

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

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

  cargo:
    name: "Run cargo tests"
    runs-on: builder

    defaults:
      run:
        working-directory: service

    steps:
      - uses: actions/checkout@v3

      - name: Setup rust toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: Install marine
        uses: baptiste0928/cargo-install@v1
        with:
          crate: marine

      - name: Build service
        run: ./build.sh

      - name: Run cargo fmt
        run: cargo fmt --all -- --check

      - name: Run cargo clippy
        env:
          RUSTFLAGS: ""
        run: cargo clippy -Z unstable-options --all

      - name: Install cargo-nextest
        uses: baptiste0928/cargo-install@v1
        with:
          crate: cargo-nextest

      - name: Run cargo nextest
        env:
          RUSTFLAGS: ""
          NEXTEST_RETRIES: 2
          NEXTEST_TEST_THREADS: 1
        run: cargo nextest run --release --all-features --no-fail-fast
