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

Merge branch 'ci-ctest-log' into 'master'

[ci] Limit ctest output to last x lines

See merge request ogs/ogs!3616
parents bb9bfe5a 033fa1ec
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
......
......@@ -23,7 +23,19 @@
- cd $build_directory_full
- cmake --build . --target package | Tee-Object -FilePath make.output
- if($env:BUILD_TESTS -eq "true") { cmake --build . --target tests }
- if($env:BUILD_CTEST -eq "true") { cmake --build . --target ctest }
- |
if($env:BUILD_CTEST -eq "true")
{
ctest -T Test --no-compress-output --exclude-regex LARGE --timeout 900
$ctest_exit=$?
if(!$ctest_exit)
{
Write-Output "ctests failed (showing the last $env:NUM_CTEST_ERROR_LINES lines):"
xsltproc $env:CI_PROJECT_DIR/scripts/test/ctest-error-output.xsl (Get-ChildItem Testing/*/Test.xml | Select-Object -Expand FullName) > ./ctest-error-ouput.txt
Get-Content -Path ./ctest-error-ouput.txt -Tail $env:NUM_CTEST_ERROR_LINES
exit $ctest_exit
}
}
- if($env:BUILD_CTEST -eq "true") { cp Testing/**/Test.xml Tests/ctest.xml }
- |
if($env:CHECK_WARNINGS -eq "true" -and (cat make.output | Select-String -Pattern ': warning') )
......
<?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