name: Java on: pull_request: paths: - "**/*.java" - "**/*.gradle" push: branches: - main workflow_dispatch: jobs: build: name: Check if tests compile cleanly with starter sources runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Set up JDK 21 uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 with: java-version: 21 distribution: "temurin" - name: Check if tests compile cleanly with starter sources run: ./gradlew compileStarterTestJava --continue working-directory: exercises lint: name: Lint Java files using Checkstyle runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Set up JDK 21 uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 with: java-version: 21 distribution: "temurin" - name: Run checkstyle run: ./gradlew check --exclude-task test --continue working-directory: exercises test-all: name: Test all exercises using java-test-runner if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Test all exercises using java-test-runner run: bin/test-with-test-runner - name: Print summary run: | if [ -f exercises/build/summary.txt ]; then echo "===== TEST SUMMARY =====" cat exercises/build/summary.txt echo "========================" else echo "===== ALL TESTS PASSED =====" echo "No summary file was generated." echo "=============================" fi if: always() - name: Archive test results uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f with: name: test-results path: exercises/**/build/results.json if: failure() test-changed: name: Test changed exercises using gradlew if: github.event_name == 'pull_request' runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with: fetch-depth: 0 - name: Test changed exercises using java-test-runner run: bin/test-changed-exercise - name: Print summary run: | if [ -f exercises/build/summary.txt ]; then echo "===== TEST SUMMARY =====" cat exercises/build/summary.txt echo "========================" else echo "===== ALL TESTS PASSED =====" echo "No summary file was generated." echo "=============================" fi if: always() - name: Archive test results uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f with: name: test-results path: | exercises/**/build/results.txt exercises/**/build/results.json if: failure()