File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3939 run : ./gradlew check --exclude-task test --continue
4040 working-directory : exercises
4141
42- test :
42+ test-all :
4343 name : Test all exercises using java-test-runner
44+ if : github.event_name == 'push' || github.event_name == 'workflow_dispatch'
4445 runs-on : ubuntu-24.04
4546 steps :
4647 - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
5253 name : test-results
5354 path : exercises/**/build/results.json
5455 if : failure()
56+
57+ test-changed :
58+ name : Test changed exercises using java-test-runner
59+ if : github.event_name == 'pull_request'
60+ runs-on : ubuntu-24.04
61+ steps :
62+ - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
63+ - name : Test all exercises using java-test-runner
64+ run : bin/test-changed-exercise
65+ - name : Archive test results
66+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
67+ with :
68+ name : test-results
69+ path : exercises/**/build/results.json
70+ if : failure()
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ set -eo pipefail
3+
4+ # Fetch base branch to compare against
5+ git fetch origin main
6+
7+ # Get changed files in this PR
8+ changed_files=$( git diff --name-only origin/main...HEAD)
9+
10+ # Extract unique exercise directories (concept/*/<slug> or practice/*/<slug>)
11+ changed_exercises=$( echo " $changed_files " | \
12+ grep -E ' ^exercises/(practice|concept)/[^/]+/.*\.(java|json|gradle)$' | \
13+ cut -d/ -f1-3 | sort -u)
14+
15+ if [ -z " $changed_exercises " ]; then
16+ echo " No relevant exercises changed, skipping tests."
17+ exit 0
18+ fi
19+
20+ # Source the original script so we can reuse verify_exercise
21+ source ./bin/test-with-test-runner
22+
23+ # Run verify_exercise for each changed exercise
24+ for dir in $changed_exercises ; do
25+ slug=$( basename " $dir " )
26+ if [[ $dir == exercises/practice/* ]]; then
27+ echo " Checking $slug (practice)..."
28+ verify_exercise " $dir " " example" " practice"
29+ elif [[ $dir == exercises/concept/* ]]; then
30+ echo " Checking $slug (concept)..."
31+ verify_exercise " $dir " " exemplar" " concept"
32+ fi
33+ done
34+
35+ exit ${exit_code}
You can’t perform that action at this time.
0 commit comments