ci: print full stacks of failed tests and keep reports on a cancel (#151)

Nightly #303 named the hanging test, SelectedStationMessageUiVisual-
RenderingTest at scene.render(), but the short exception format showed
only that line, not the call that blocked below it. The job timeout
cancels the run, and the test reports were kept only on failure().

Failed tests now print their full stack, causes included, and the
reports are uploaded on cancelled() as well.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Rsclub2_2andClaude Opus 5.5 authored and GitHub committed 2026-10-25 01:15:56 +02:00
1 parent af8affda8c
commit 738ae2125e
4 files changed
+14 -3

No files matched your search

+3 -1
View File
@@ -111,8 +111,10 @@ jobs:
exit 1
fi
# Also on cancelled(): the job timeout cancels a hanging run, and the reports of the
# classes that did finish carry the timed-out tests' full stacks.
- name: Keep the test reports on a failure
if: failure()
if: failure() || cancelled()
uses: actions/upload-artifact@v7
with:
name: test-results
+3 -1
View File
@@ -286,8 +286,10 @@ jobs:
if-no-files-found: ignore
retention-days: 14
# Also on cancelled(): the job timeout cancels a hanging run, and the reports of the
# classes that did finish carry the timed-out tests' full stacks.
- name: Keep the test reports on a failure
if: failure()
if: failure() || cancelled()
uses: actions/upload-artifact@v7
with:
name: test-results
+3 -1
View File
@@ -130,8 +130,10 @@ jobs:
exit 1
fi
# Also on cancelled(): the job timeout cancels a hanging run, and the reports of the
# classes that did finish carry the timed-out tests' full stacks.
- name: Keep the test reports on a failure
if: failure()
if: failure() || cancelled()
uses: actions/upload-artifact@v7
with:
name: test-results
+5
View File
@@ -151,6 +151,11 @@ subprojects {
*/
systemProperty("junit.jupiter.execution.timeout.default", "2m")
systemProperty("junit.jupiter.execution.timeout.thread.mode.default", "SEPARATE_THREAD")
// The default short format prints only the first frame of each cause, which for a
// timed-out test is the line it hung in but not the call that blocked there.
testLogging {
exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
}
finalizedBy(checkTestUserHome)
}