name: Run Tests on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: gradle: [7.0.1] java: [jdk16] jvm: [hotspot] runs-on: ubuntu-20.04 container: image: gradle:${{ matrix.gradle }}-${{ matrix.java }} options: --user root steps: - uses: actions/checkout@v2 - uses: gradle/wrapper-validation-action@v1 - run: gradle build check -x test --stacktrace # This job is used to feed the test matrix of next job to allow the tests to run in parallel prepare_test_matrix: # Lets wait to ensure it builds before going running tests needs: build runs-on: ubuntu-20.04 container: image: gradle:7.0.1-jdk16 options: --user root steps: - uses: actions/checkout@v2 - run: gradle writeActionsTestMatrix --stacktrace - id: set-matrix run: echo "::set-output name=matrix::$(cat build/test_matrix.json)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} run_tests: needs: prepare_test_matrix strategy: fail-fast: false matrix: java: [jdk16] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} exclude: - java: jdk16 test: net.fabricmc.loom.test.integration.KotlinTest runs-on: ubuntu-20.04 container: image: gradle:7.0.0-${{ matrix.java }} options: --user root steps: - uses: actions/checkout@v2 - run: gradle test --tests ${{ matrix.test }} --stacktrace env: TEST_WARNING_MODE: fail - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: ${{ matrix.test }} (${{ matrix.java }}) Results path: build/reports/ run_tests_windows: needs: prepare_test_matrix strategy: fail-fast: false matrix: java: [16] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} exclude: - java: 16 test: net.fabricmc.loom.test.integration.KotlinTest runs-on: windows-2019 steps: - uses: actions/checkout@v2 - name: setup jdk ${{ matrix.java }} uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - run: ./gradlew test --tests ${{ matrix.test }} --stacktrace env: TEST_WARNING_MODE: fail - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: ${{ matrix.test }} (${{ matrix.java }}) Results path: build/reports/ # Special case this test to run across all os's reproducible_build_test: needs: build strategy: fail-fast: false matrix: java: [ 16 ] os: [ windows-2019, ubuntu-20.04, macos-10.15 ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - run: ./gradlew test --tests *ReproducibleBuildTest --stacktrace - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: Reproducible Build ${{ matrix.os }} (${{ matrix.java }}) Results path: build/reports/ bootstrap_tests: needs: build strategy: fail-fast: false matrix: java: [ 8, 11, 15, 16 ] gradle: [ 4.9, 5.2, 6.0.1, 6.9, 7.0.2 ] exclude: - java: 16 gradle: 6.9 - java: 16 gradle: 6.0.1 - java: 16 gradle: 5.2 - java: 16 gradle: 4.9 - java: 15 gradle: 6.0.1 - java: 15 gradle: 5.2 - java: 15 gradle: 4.9 runs-on: ubuntu-20.04 container: image: gradle:7.0.2-jdk16 options: --user root steps: # Build loom and publish to maven local - uses: actions/checkout@v2 - run: gradle build publishToMavenLocal -x test -x check - run: gradle wrapper --gradle-version=${{ matrix.gradle }} working-directory: bootstrap/test-project - run: gradle --stop - uses: actions/setup-java@v2 with: java-version: ${{ matrix.java }} distribution: 'adopt' - run: ./gradlew --version working-directory: bootstrap/test-project - run: ./gradlew build || true working-directory: bootstrap/test-project # TODO check the output of the previous step here