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: Test Dependencies
        uses: ./.github/actions/test-dependencies
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

      - 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

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

      - name: Test Dependencies
        uses: ./.github/actions/test-dependencies
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

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

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

      - name: Test Dependencies
        uses: ./.github/actions/test-dependencies
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Build node
        run: |
          cd substrate/node
          cargo build

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