From 3c4d8494fd8f95e3661b068642f178178b64e986 Mon Sep 17 00:00:00 2001 From: akarnokd Date: Wed, 25 Mar 2026 11:16:07 +0100 Subject: [PATCH 1/3] 4.x: Report back test failures in a readable manner for PRs/Snaps --- .github/workflows/gradle_pr.yml | 14 ++++++++++++++ .github/workflows/gradle_snapshot.yml | 14 ++++++++++++++ build.gradle | 9 +++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle_pr.yml b/.github/workflows/gradle_pr.yml index cd13099f6e..c385bf7a8f 100644 --- a/.github/workflows/gradle_pr.yml +++ b/.github/workflows/gradle_pr.yml @@ -33,6 +33,20 @@ jobs: run: ./gradlew test --tests "io.reactivex.rxjava4.validators.*" --stacktrace --no-daemon - name: Build RxJava run: ./gradlew build --stacktrace + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 + if: always() # important: run even if tests failed + with: + files: | + **/build/test-results/**/TEST-*.xml + **/build/test-results/**/*.xml + **/build/test-results/testNG/TEST-*.xml + comment_mode: failures + fail_on: test_failures + check_name: "🧪 RxJava Test Results" + report_individual_runs: false + - name: Upload to Codecov uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3 - name: Generate Javadoc diff --git a/.github/workflows/gradle_snapshot.yml b/.github/workflows/gradle_snapshot.yml index 617a44d8c6..0e5dca3833 100644 --- a/.github/workflows/gradle_snapshot.yml +++ b/.github/workflows/gradle_snapshot.yml @@ -36,6 +36,20 @@ jobs: run: ./gradlew test --tests "io.reactivex.rxjava4.validators.*" --stacktrace --no-daemon - name: Build RxJava run: ./gradlew build --stacktrace --no-daemon + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 + if: always() # important: run even if tests failed + with: + files: | + **/build/test-results/**/TEST-*.xml + **/build/test-results/**/*.xml + **/build/test-results/testNG/TEST-*.xml + comment_mode: failures + fail_on: test_failures + check_name: "🧪 RxJava Test Results" + report_individual_runs: false + prerelease: needs: build runs-on: ubuntu-latest diff --git a/build.gradle b/build.gradle index 349b67b449..b0fc0a7348 100644 --- a/build.gradle +++ b/build.gradle @@ -194,6 +194,13 @@ tasks.register('testNG', Test) { maxParallelForks = 1 + // Ensure JUnit-compatible XML output in the standard location + reports { + html.required = true + junitXml.required = true + junitXml.outputLocation = file("${buildDir}/test-results/test") // ← important + } + // Optional: fine-tune includes/excludes // include '**/*NgTest.class', '**/*TestNG.class' // exclude '**/*JUnitTest.class' @@ -212,8 +219,6 @@ tasks.register('testNG', Test) { warn.events = testLoggingConfig warn.exceptionFormat = "full" } - reports.html.required = true - reports.junitXml.required = true // if you want JUnit-compatible XML too } check.dependsOn testNG From c50c33f49329900bb4b03c820f68c93aba0e7ec6 Mon Sep 17 00:00:00 2001 From: David Karnok Date: Wed, 25 Mar 2026 11:31:17 +0100 Subject: [PATCH 2/3] gradle_pr.yml `test_failures` -> `test failures` --- .github/workflows/gradle_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle_pr.yml b/.github/workflows/gradle_pr.yml index c385bf7a8f..4ae241fd3e 100644 --- a/.github/workflows/gradle_pr.yml +++ b/.github/workflows/gradle_pr.yml @@ -43,7 +43,7 @@ jobs: **/build/test-results/**/*.xml **/build/test-results/testNG/TEST-*.xml comment_mode: failures - fail_on: test_failures + fail_on: test failures check_name: "🧪 RxJava Test Results" report_individual_runs: false From f40e3eb4dd5ddbd3855684e93fc2f05ee113dd8b Mon Sep 17 00:00:00 2001 From: akarnokd Date: Wed, 25 Mar 2026 12:38:38 +0100 Subject: [PATCH 3/3] 4.x: Enable parallel TestNG run --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b0fc0a7348..b88d8e12e6 100644 --- a/build.gradle +++ b/build.gradle @@ -192,7 +192,9 @@ tasks.register('testNG', Test) { // Tell it to use TestNG explicitly useTestNG() - maxParallelForks = 1 + maxHeapSize = "1200m" + maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 + // maxParallelForks = 1 // Ensure JUnit-compatible XML output in the standard location reports {