name: Monero Tests

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

  pull_request:
    paths:
      - "networks/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-io --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-generators --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-primitives --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-mlsag --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-clsag --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-borromean --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-bulletproofs --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-serai --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-rpc --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-simple-request-rpc --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-address --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-wallet --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-seed --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package polyseed --lib
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-wallet-util --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.3.4]

    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac

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

      - name: Run Integration Tests Without Features
        run: |
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-serai --test '*'
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-simple-request-rpc --test '*'
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-wallet --test '*'
          GITHUB_CI=true RUST_BACKTRACE=1 cargo test --package monero-wallet-util --test '*'

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