diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 53dac538e083..7fe91c6dcf5a 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -38,4 +38,10 @@ jobs: key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} restore-keys: ${{ runner.os }}-gradle - run: ./gradlew check + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: test logs + path: | + **/build/testlogs diff --git a/build.gradle b/build.gradle index 7df7c9f079b3..bda543fcf0de 100644 --- a/build.gradle +++ b/build.gradle @@ -130,6 +130,23 @@ subprojects { } test { + def logDir = "${rootDir}/build/testlogs" + def logFile = "${logDir}/${project.name}.log" + mkdir("${logDir}") + delete("${logFile}") + def buildLog = new File(logFile) + addTestOutputListener(new TestOutputListener() { + def lastDescriptor + @Override + void onOutput(TestDescriptor testDescriptor, TestOutputEvent testOutputEvent) { + if (lastDescriptor != testDescriptor) { + buildLog << "--------\n- Test log for: "<< testDescriptor << "\n--------\n" + lastDescriptor = testDescriptor + } + buildLog << testOutputEvent.destination << " " << testOutputEvent.message + } + }) + testLogging { if ("true".equalsIgnoreCase(System.getenv('CI'))) { events "failed", "passed"