Skip to content
Snippets Groups Projects
Verified Commit c3b4e85b authored by Lars Bilke's avatar Lars Bilke
Browse files

Use xsltproc to transform ctest error output.

parent 112b3d03
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,8 @@ variables:
BUILD_PROCESSES: "" # Empty string: builds all processes
BUILD_TESTS: "true"
BUILD_CTEST: "true"
# Test config
NUM_CTEST_ERROR_LINES: 1000 # tail this much lines from failed output
workflow:
rules:
......
......@@ -22,7 +22,17 @@
if [[ -z "$TARGETS" ]]; then
$BUILD_CMD_PREFIX cmake --build . --target package > >(tee make.output)
if [ "$BUILD_TESTS" = true ] ; then $BUILD_CMD_PREFIX cmake --build . --target tests ; fi
if [ "$BUILD_CTEST" = true ] ; then $BUILD_CMD_PREFIX cmake --build . --target ctest ; fi
if [ "$BUILD_CTEST" = true ]; then
ctest_exit=0
ctest -T Test --no-compress-output --exclude-regex LARGE --timeout 900 || ctest_exit=$?
if [ $ctest_exit -ne 0 ]; then
echo "ctests failed (showing the last ${NUM_CTEST_ERROR_LINES} lines):"
xsltproc ${CI_PROJECT_DIR}/scripts/test/ctest-error-output.xsl Testing/*/Test.xml | tail -n ${NUM_CTEST_ERROR_LINES}
exit $ctest_exit
fi
fi
if [ "$BUILD_CTEST_LARGE" = true ] ; then $BUILD_CMD_PREFIX cmake --build . --target ctest-large ; fi
if [ "$BUILD_CTEST" = true ] ; then cp Testing/**/Test.xml Tests/ctest.xml ; fi
if [ "$BUILD_CTEST_LARGE" = true ] ; then cp Testing/**/Test.xml Tests/ctest-large.xml ; fi
......
<?xml version="1.0"?>
<!-- Was created with:
xmlstarlet sel -C -t \
-m "//*/Testing/Test[@Status='failed']" \
-o '[ctest] ' -v './/Name' -o ':' -n -n \
-v './/Results/Measurement/Value/text()' -n \
-o '[ctest end]' -n -n \
Testing/20210510-0943/Test.xml > ctest-error-output.xsl
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" version="1.0" extension-element-prefixes="exslt">
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="//*/Testing/Test[@Status='failed']">
<xsl:text>[ctest] </xsl:text>
<xsl:call-template name="value-of-template">
<xsl:with-param name="select" select=".//Name"/>
</xsl:call-template>
<xsl:text>:</xsl:text>
<xsl:value-of select="'&#10;'"/>
<xsl:value-of select="'&#10;'"/>
<xsl:call-template name="value-of-template">
<xsl:with-param name="select" select=".//Results/Measurement/Value/text()"/>
</xsl:call-template>
<xsl:value-of select="'&#10;'"/>
<xsl:text>[ctest end]</xsl:text>
<xsl:value-of select="'&#10;'"/>
<xsl:value-of select="'&#10;'"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="value-of-template">
<xsl:param name="select"/>
<xsl:value-of select="$select"/>
<xsl:for-each select="exslt:node-set($select)[position()&gt;1]">
<xsl:value-of select="'&#10;'"/>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment