name: "test"

on:
  pull_request:
    paths-ignore:
      - "**.md"
      - ".github/**"
      - "!.github/workflows/run-tests.yml"
      - "!.github/workflows/tests.yml"
    types:
      - "labeled"
      - "synchronize"
      - "opened"
      - "reopened"
  push:
    branches:
      - "main"
    paths-ignore:
      - "**.md"
      - ".github/**"
      - "!.github/workflows/run-tests.yml"
      - "!.github/workflows/tests.yml"

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

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

  cargo:
    name: "registry / Run cargo tests"
    runs-on: builder
    timeout-minutes: 60

    defaults:
      run:
        working-directory: service

    steps:
      - uses: actions/checkout@v3

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

      - name: Setup marine
        uses: fluencelabs/setup-marine@v1

      - 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 -- -D warnings

      - name: Install cargo-nextest
        uses: baptiste0928/cargo-install@v2.0.0
        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
