name: Monero Tests

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

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

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

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

      - name: Run Unit Tests Without Features
        run: 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.0.0]

    steps:
      - uses: actions/checkout@v3

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

      - name: Run Integration Tests Without Features
        # https://github.com/rust-lang/cargo/issues/8396
        run: cargo test --package monero-serai --test '*'

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