@@ -196,11 +196,35 @@ jobs:
196196
197197 - id : set-matrix
198198 run : |
199- modules=$(ls -d smoke-tests/apps/* | sed 's/\/$//' | sed 's/\//:/g' | sed 's/^/:/')
200- inner_json=$(echo $modules | xargs echo | sed 's/ /","/g')
201- echo "matrix={\"module\":[\"$inner_json\"]}" >> $GITHUB_OUTPUT
199+ json_array=$(
200+ for dir in smoke-tests/apps/*; do
201+ # Convert directory path to module name (e.g., "smoke-tests/apps/MyApp" -> "smoke-tests:apps:MyApp")
202+ module=$(echo "$dir" | sed 's|/|:|g')
203+ # Extract just the app name from the module path (e.g., "smoke-tests:apps:MyApp" -> "MyApp")
204+ module_short=$(echo "$module" | sed 's|.*:||')
205+
206+ find "${dir}/src/smokeTest/java" -name "*Test.java" | \
207+ # Remove the base path to get relative path from smokeTest/java
208+ sed "s|${dir}/src/smokeTest/java/||" | \
209+ # Convert file name to class name (e.g., "com/example/MyTest.java" -> "com.example.MyTest")
210+ sed 's|/|.|g' | sed 's|\.java$||' | \
211+ # Process each fully qualified test class name
212+ while read -r class_name; do
213+ # Extract just the simple class name (e.g., "com.example.MyTest" -> "MyTest")
214+ class_short=$(echo "$class_name" | sed 's/.*\.//')
215+ echo "{\"display\":\"${module_short}:${class_short}\"," \
216+ "\"module\":\"${module}\"," \
217+ "\"test_class\":\"${class_name}\"}"
218+ done
219+ # Join all JSON objects with commas and remove trailing comma
220+ done | tr '\n' ',' | sed 's/,$//'
221+ )
222+
223+ # Output the matrix in GitHub Actions format
224+ echo "matrix={\"include\":[$json_array]}" >> $GITHUB_OUTPUT
202225
203226 smoke-test :
227+ name : ${{ matrix.display }}
204228 needs : setup-smoke-test-matrix
205229 runs-on : ubuntu-latest
206230 strategy :
@@ -226,12 +250,16 @@ jobs:
226250 uses : gradle/actions/setup-gradle@v4
227251
228252 - name : Test
229- run : ./gradlew ${{ matrix.module }}:smokeTest
253+ run : ./gradlew ${{ matrix.module }}:smokeTest --tests "${{ matrix.test_class }}*"
230254
231255 - name : Create unique artifact name
232256 if : failure()
233257 run : |
234- echo "UPLOAD_ARTIFACT_NAME=${{ matrix.module }}" | sed 's/:/-/g' >> $GITHUB_ENV
258+ # Create a unique name based on module and test class
259+ artifact_name="${{ matrix.module }}:${{ matrix.test_class }}"
260+ # Replace colons and dots with hyphens for valid artifact names
261+ artifact_name=$(echo "$artifact_name" | sed 's/[:.]/\-/g')
262+ echo "UPLOAD_ARTIFACT_NAME=$artifact_name" >> $GITHUB_ENV
235263
236264 - name : Upload smoke test reports
237265 uses : actions/upload-artifact@v4
0 commit comments