name: Monero Tests

on:
  push:
    branches:
      - develop
    paths:
      - "coins/monero/**"
      - "processor/**"

  pull_request:
    paths:
      - "coins/monero/**"
      - "processor/**"

  workflow_dispatch:

jobs:
  # Only run these once since they will be consistent regardless of any node
  unit-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

      - name: Test Dependencies
        uses: ./.github/actions/test-dependencies

      - name: Run Unit Tests Without Features
        run: GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-serai --lib

      # Doesn't run unit tests with features as the tests workflow will

  integration-tests:
    runs-on: ubuntu-latest
    # Test against all supported protocol versions
    strategy:
      matrix:
        version: [v0.17.3.2, v0.18.2.0]

    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

      - name: Test Dependencies
        uses: ./.github/actions/test-dependencies
        with:
          monero-version: ${{ matrix.version }}

      - name: Run Integration Tests Without Features
        # Runs with the binaries feature so the binaries build
        # https://github.com/rust-lang/cargo/issues/8396
        run: GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-serai --features binaries --test '*'

      - name: Run Integration Tests
        # Don't run if the the tests workflow also will
        if: ${{ matrix.version != 'v0.18.2.0' }}
        run: GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-serai --all-features --test '*'