String getMarkdownTestSummary()

in jenkins-pipeline-shared-libraries/vars/util.groovy [351:411]


String getMarkdownTestSummary(String jobId = '', String additionalInfo = '', String buildUrl = "${BUILD_URL}", String outputStyle = 'ZULIP') {
    def jobInfo = retrieveJobInformation(buildUrl)

    // Check if any *_console.log is available as artifact first
    String defaultConsoleLogId = 'Console Logs'
    Map consoleLogs = jobInfo.artifacts?.collect { it.fileName }
            .findAll { it.endsWith('console.log') }
            .collectEntries { filename ->
                int index = filename.lastIndexOf('_')
                String logId = index > 0 ? filename.substring(0, index) : defaultConsoleLogId
                return [ (logId) : retrieveArtifact(filename, buildUrl) ]
            } ?: [ (defaultConsoleLogId) : retrieveConsoleLog(50, buildUrl)]

    String jobResult = jobInfo.result
    String summary = """
${jobId ? "**${jobId} job**" : 'Job'} ${formatBuildNumber(outputStyle, BUILD_NUMBER)} was: **${jobResult}**
"""

    if (!isJobResultSuccess(jobResult)) {
        summary += "Possible explanation: ${getResultExplanationMessage(jobResult)}\n"
    }

    if (additionalInfo) {
        summary += """
${additionalInfo}
"""    
    }

    if (!isJobResultSuccess(jobResult)) {
        boolean testResultsFound = false
        summary += "\nPlease look here: ${buildUrl}display/redirect"

        try {
            def testResults = retrieveTestResults(buildUrl)
            def failedTests = retrieveFailedTests(buildUrl)
            testResultsFound=true

            summary += """
\n**Test results:**
- PASSED: ${testResults.passCount}
- FAILED: ${testResults.failCount}
"""

            summary += 'GITHUB'.equalsIgnoreCase(outputStyle) ? """
Those are the test failures: ${failedTests.size() <= 0 ? 'none' : '\n'}${failedTests.collect { failedTest ->
                return """<details>
<summary><a href="${failedTest.url}">${failedTest.fullName}</a></summary>
${formatTextForHtmlDisplay(failedTest.details ?: failedTest.stacktrace)}
</details>"""
}.join('\n')}
"""   
                :  """
Those are the test failures: ${failedTests.size() <= 0 ? 'none' : '\n'}${failedTests.collect { failedTest ->
                return """```spoiler [${failedTest.fullName}](${failedTest.url})
${failedTest.details ?: failedTest.stacktrace}
```"""
}.join('\n')}
"""
        } catch (err) {
            echo 'No test results found'
        }