Skip to content

Commit 7df7ca0

Browse files
committed
Add dynamic discovery of test classes to avoid duplication between pom.xml and GH actions script.
1 parent b212ced commit 7df7ca0

File tree

1 file changed

+48
-17
lines changed

1 file changed

+48
-17
lines changed

.github/workflows/check-e2e.yml

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,53 @@ permissions:
4040
contents: read
4141

4242
jobs:
43+
discover-tests:
44+
name: Discover E2E test classes
45+
runs-on: ubuntu-latest
46+
outputs:
47+
e2e-classes: ${{ steps.parse.outputs.e2e-classes }}
48+
e2e-graal-classes: ${{ steps.parse.outputs.e2e-graal-classes }}
49+
steps:
50+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
51+
- name: Parse test classes from POM profiles
52+
id: parse
53+
run: |
54+
TEST_DIR="powertools-e2e-tests/src/test/java"
55+
POM="powertools-e2e-tests/pom.xml"
56+
57+
# e2e profile uses **/*E2ET.java — find all matching test files
58+
E2E_CLASSES=$(find "$TEST_DIR" -name '*E2ET.java' | xargs -n1 basename | sed 's/\.java$//' | sort | jq -R . | jq -s .)
59+
60+
# Extract include patterns from e2e-graal profile, then match against test files
61+
GRAAL_CLASSES=$(
62+
awk '/<id>e2e-graal<\/id>/,/<\/profile>/' "$POM" \
63+
| grep '<include>' \
64+
| sed 's/.*<include>\(.*\)<\/include>.*/\1/' \
65+
| while read -r pattern; do
66+
filename="${pattern##*/}"
67+
find "$TEST_DIR" -name "$filename" | xargs -n1 basename | sed 's/\.java$//'
68+
done \
69+
| sort | jq -R . | jq -s .
70+
)
71+
72+
echo "e2e test classes: $E2E_CLASSES"
73+
echo "e2e-graal test classes: $GRAAL_CLASSES"
74+
75+
if [ "$E2E_CLASSES" = "[]" ] || [ -z "$E2E_CLASSES" ]; then
76+
echo "::error::No e2e test classes found — check POM includes and test directory"
77+
exit 1
78+
fi
79+
if [ "$GRAAL_CLASSES" = "[]" ] || [ -z "$GRAAL_CLASSES" ]; then
80+
echo "::error::No e2e-graal test classes found — check POM includes and test directory"
81+
exit 1
82+
fi
83+
84+
echo "e2e-classes=$E2E_CLASSES" >> "$GITHUB_OUTPUT"
85+
echo "e2e-graal-classes=$GRAAL_CLASSES" >> "$GITHUB_OUTPUT"
86+
4387
e2e:
4488
name: E2E ${{ matrix.test-class }} (Java ${{ matrix.java }})
89+
needs: discover-tests
4590
runs-on: ubuntu-latest
4691
permissions:
4792
id-token: write
@@ -55,17 +100,7 @@ jobs:
55100
- 17
56101
- 21
57102
- 25
58-
test-class:
59-
- BatchE2ET
60-
- IdempotencyE2ET
61-
- LargeMessageE2ET
62-
- LargeMessageIdempotentE2ET
63-
- LoggingE2ET
64-
- MetricsE2ET
65-
- ParametersE2ET
66-
- TracingE2ET
67-
- ValidationALBE2ET
68-
- ValidationApiGWE2ET
103+
test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-classes) }}
69104

70105
steps:
71106
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -92,6 +127,7 @@ jobs:
92127
93128
e2e-graal:
94129
name: E2E GraalVM ${{ matrix.test-class }} (Java ${{ matrix.java }})
130+
needs: discover-tests
95131
runs-on: ubuntu-latest
96132
permissions:
97133
id-token: write
@@ -102,12 +138,7 @@ jobs:
102138
matrix:
103139
java:
104140
- 25
105-
test-class:
106-
- MetricsE2ET
107-
- LoggingE2ET
108-
- ParametersE2ET
109-
- TracingE2ET
110-
- IdempotencyE2ET
141+
test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-graal-classes) }}
111142

112143
steps:
113144
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

0 commit comments

Comments
 (0)