name: Test

on:
  push:

jobs:
  Gradle Test:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Set up JDK
      uses: actions/setup-java@v4
      with:
        java-version: '23'
        check-latest: true
        distribution: 'zulu'
        
    - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v4
        with:
          add-job-summary: always
          cache-cleanup: on-success

    - name: Cache Gradle dependencies
      uses: actions/cache@v4
      with:
        path: | 
          ~/.gradle/caches
        key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
        restore-keys: |
          ${{ runner.os }}-gradle-

    - name: Test
      env:
        DISCORD_TEST_TOKEN: {{ secrets.DISCORD_TOKEN }}
      run: chmod +x gradlew; ./gradlew test

    - name: Publish Test Results
      if: always()
      uses: dorny/test-reporter@v1
      with:
        name: Test Results
        path: build/test-results/test/*.xml
        reporter: junit