name: Tests

on:
  push:
    branches:
      - develop
    paths:
      - "common/**"
      - "crypto/**"
      - "coins/**"
      - "message-queue/**"
      - "processor/**"
      - "coordinator/**"
      - "substrate/**"

  pull_request:
    paths:
      - "common/**"
      - "crypto/**"
      - "coins/**"
      - "message-queue/**"
      - "processor/**"
      - "coordinator/**"
      - "substrate/**"

  workflow_dispatch:

jobs:
  test-infra:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

      - name: Build Dependencies
        uses: ./.github/actions/build-dependencies

      - name: Run Tests
        run: |
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features \
            -p serai-message-queue \
            -p serai-processor-messages \
            -p serai-processor \
            -p tendermint-machine \
            -p tributary-chain \
            -p serai-coordinator \
            -p serai-docker-tests

  test-substrate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

      - name: Build Dependencies
        uses: ./.github/actions/build-dependencies

      - name: Run Tests
        run: |
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features \
            -p serai-primitives \
            -p serai-coins-primitives \
            -p serai-coins-pallet \
            -p serai-dex-pallet \
            -p serai-validator-sets-primitives \
            -p serai-validator-sets-pallet \
            -p serai-in-instructions-primitives \
            -p serai-in-instructions-pallet \
            -p serai-signals-pallet \
            -p serai-runtime \
            -p serai-node

  test-serai-client:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

      - name: Build Dependencies
        uses: ./.github/actions/build-dependencies

      - name: Run Tests
        run: GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client