2015-09-19 16:35:22 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2020-10-09 07:17:33 +00:00
|
|
|
# This example script takes the XML output of a gtest run and formats
|
|
|
|
# it as HTML. It can easily be adapted to other XML test output formats
|
|
|
|
# such as JUnit or CTest
|
|
|
|
|
|
|
|
# Prepare xml with ./path/to/test --gtest_output=xml:path/to/output.xml
|
|
|
|
|
|
|
|
# Usage: format-test-results test_result.xml > output.html
|
|
|
|
|
|
|
|
if [ ! -f "$1" ]; then
|
|
|
|
echo "File not found: \"$1\""
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
xsltproc --stringparam JOB $JOB --stringparam RUN $RUN <(cat <<\EOF
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
|
<xsl:output method="html" indent="yes" />
|
|
|
|
|
|
|
|
<xsl:template match="/">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<title>Test report for <xsl:value-of select="$JOB" /> #<xsl:value-of select="$RUN" /></title>
|
|
|
|
<style>
|
|
|
|
body { font-family: Helvetica Neue, Helvetica, Arial, sans-serif; }
|
|
|
|
label:hover { cursor: pointer; }
|
|
|
|
label:before { content: '+ ' }
|
|
|
|
input[type=checkbox].toggle-collapse { display: none; }
|
|
|
|
input[type=checkbox].toggle-collapse~.collapsible { display: none; }
|
|
|
|
input[type=checkbox].toggle-collapse:checked~.collapsible { display: block; }
|
|
|
|
code { white-space: pre-wrap; color: white; }
|
|
|
|
.failure { background-color: #c73030; color: white; }
|
|
|
|
table { min-width: 720px; border-collapse: collapse; }
|
|
|
|
td, th { padding: 5px; }
|
|
|
|
tr:nth-child(even) td { padding: 0; }
|
|
|
|
tr:nth-child(even) { border-bottom: 1px solid #b3abab; }
|
|
|
|
.testcase { padding: 5px; }
|
|
|
|
.testcase.success:before { content: '✔ '; color: green; }
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1><xsl:value-of select="$JOB" /> #<xsl:value-of select="$RUN" /></h1>
|
|
|
|
<h2>Test Report</h2>
|
|
|
|
<table>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Suite</th>
|
|
|
|
<th>Tests run</th>
|
|
|
|
<th>Failures</th>
|
|
|
|
<th>Errors</th>
|
|
|
|
<th>Elapsed time</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<xsl:apply-templates select="testsuites" />
|
|
|
|
</table>
|
|
|
|
</body>
|
2015-09-19 16:35:22 +00:00
|
|
|
</html>
|
2020-10-09 07:17:33 +00:00
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<xsl:template match="testsuite">
|
|
|
|
<xsl:variable name="result">
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="(@failures > 0) or (@errors > 0)">failure</xsl:when>
|
|
|
|
<xsl:otherwise>success</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:variable>
|
|
|
|
<tr class="{$result}">
|
|
|
|
<td>
|
|
|
|
<label for="suite-{@name}"><xsl:value-of select="@name" /></label>
|
|
|
|
</td>
|
|
|
|
<td><xsl:value-of select="@tests" /></td>
|
|
|
|
<td><xsl:value-of select="@failures" /></td>
|
|
|
|
<td><xsl:value-of select="@errors" /></td>
|
|
|
|
<td><xsl:value-of select="@time" /></td>
|
|
|
|
</tr>
|
|
|
|
<tr class="toggle-target">
|
|
|
|
<td colspan="5">
|
|
|
|
<input class="toggle-collapse" id="suite-{@name}" type="checkbox" />
|
|
|
|
<div class="collapsible" style="padding-left: 15px;">
|
|
|
|
<xsl:apply-templates select="testcase" />
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<xsl:template match="testcase">
|
|
|
|
<xsl:choose>
|
|
|
|
<!-- has child nodes? -->
|
|
|
|
<xsl:when test="*">
|
|
|
|
<div class="testcase failure">
|
|
|
|
<xsl:value-of select="@name" /><br />
|
|
|
|
<xsl:apply-templates select="failure" />
|
|
|
|
</div>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
|
|
<div class="testcase success">
|
|
|
|
<xsl:value-of select="@name" />
|
|
|
|
</div>
|
|
|
|
</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<xsl:template match="failure">
|
|
|
|
<div style="padding: 5px; background-color: #313235">
|
|
|
|
<code>
|
|
|
|
<xsl:value-of select="@message"/>
|
|
|
|
</code>
|
|
|
|
</div>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
</xsl:stylesheet>
|
|
|
|
|
2015-09-19 16:35:22 +00:00
|
|
|
EOF
|
2020-10-09 07:17:33 +00:00
|
|
|
) "$1"
|