name: Rhino CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

permissions: read-all

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      # Some tests require more CPU, and all can use multiple CPUs
      max-parallel: 1
    name: Rhino Tests
    steps:
    - name: Check out Rhino
      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
    - name: Check out test262
      # We don't actually want all the history for this part
      run: git submodule update --init --single-branch
    - name: Set up Java
      uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
      # By putting JVMs in reverse order, the last one is the one that
      # will go in the path.
      with:
        java-version: |
          11
          17
          21
        distribution: 'adopt'
    - name: Build and test Java 21
      run: >-
        ./gradlew check
    - name: Upload results Java 21
      uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
      if: ${{ always() }}
      with:
        name: reports-java-21
        path: '*/build/reports'
    - name: Build and test Java 17
      env:
        RHINO_TEST_JAVA_VERSION: "17"
      run: >-
        ./gradlew check
    - name: Upload results Java 17
      uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
      if: ${{ always() }}
      with:
        name: reports-java-17
        path: '*/build/reports'
    - name: Build and test Java 11
      env:
        RHINO_TEST_JAVA_VERSION: "11"
      run: >-
        ./gradlew check
    - name: Upload results Java 11
      uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
      if: ${{ always() }}
      with:
        name: reports-java-11
        path: '*/build/reports'
