diff --git a/cmake_targets/autotests/run_compilation_autotests.bash b/cmake_targets/autotests/run_compilation_autotests.bash
index c54ba1e778..9963edead6 100755
--- a/cmake_targets/autotests/run_compilation_autotests.bash
+++ b/cmake_targets/autotests/run_compilation_autotests.bash
@@ -7,20 +7,26 @@ else
exit 1
fi
+# include the jUnit-like logging functions
+source $OPENAIR_DIR/cmake_targets/tools/test_helper
+
test_compile() {
+ xUnit_start
mkdir -p $tdir/$1/build
cd $tdir/$1/build
{
- cmake ..
- rm -f $3
- make -j4 $2
+ cmake ..
+ rm -f $3
+ make -j4 $2
} > $tdir/log/$1.txt 2>&1
if [ -s $3 ] ; then
- cp $3 $tdir/bin/`basename $3`.$1
- echo_success "$1 test compiled"
- else
- echo_error "$1 test compilation failed"
- fi
+ cp $3 $tdir/bin/`basename $3`.$1
+ echo_success "$1 test compiled"
+ xUnit_success "compilation" $1
+ else
+ echo_error "$1 test compilation failed"
+ xUnit_fail "compilation" $1
+ fi
}
tdir=$OPENAIR_DIR/cmake_targets/autotests
@@ -77,3 +83,5 @@ test_compile \
test.0120 nasmesh \
CMakeFiles/nasmesh/nasmesh.ko $tdir/bin/nasmesh.ko
+# write the test results into a file
+xUnit_write "$tdir/log/compilation_autotests.xml"
diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper
new file mode 100644
index 0000000000..e408102364
--- /dev/null
+++ b/cmake_targets/tools/test_helper
@@ -0,0 +1,64 @@
+# source this file in a bash
+
+XUNIT_TESTSUITE_START=0
+XUNIT_START=0
+XUNIT_TOTAL=0
+XUNIT_FAILED=0
+XUNIT_SUCCESS=0
+XUNIT_TESTCASES_XML=""
+
+## Call this at the start of a testcase.
+# \sa xUnit_fail()
+# \sa xUnit_success()
+xUnit_start() {
+ XUNIT_START=$(date +%s.%N)
+ if [ $XUNIT_TESTSUITE_START == 0 ]; then
+ # very first call: start of a testsuite
+ XUNIT_TESTSUITE_START=$XUNIT_START
+ fi
+}
+
+## Call this after the testcase finished with a failure.
+# \sa xUnit_success()
+# \pre xUnit_start() must have been called before
+# \param $1 classname
+# \param $2 testcase name
+xUnit_fail() {
+ currtime=$(date +%s.%N)
+ time=$(echo "$currtime - $XUNIT_START" | bc -l)
+ xml=""
+ XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML $xml"
+ XUNIT_FAILED=$((XUNIT_FAILED+1))
+}
+
+## Call this after the testcase finished successfully.
+# \sa xUnit_fail()
+# \pre xUnit_start() must have been called before
+# \param $1 classname
+# \param $2 testcase name
+xUnit_success() {
+ currtime=$(date +%s.%N)
+ time=$(echo "$currtime - $XUNIT_START" | bc -l)
+ xml=""
+ XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML $xml"
+ XUNIT_SUCCESS=$((XUNIT_SUCCESS+1))
+}
+
+## Call this after all testcases have been completed.
+# This functions writes out the test report.
+# \param $1 filename
+xUnit_write() {
+ tests=$((XUNIT_FAILED+XUNIT_SUCCESS))
+ timestamp=$(date --iso-8601=seconds)
+ time=$(echo "$currtime - $XUNIT_TESTSUITE_START" | bc -l)
+ xml_header=""
+ echo $xml_header > $1
+ echo $XUNIT_TESTCASES_XML >> $1
+ echo "" >> $1
+ XUNIT_TESTSUITE_START=0
+ XUNIT_START=0
+ XUNIT_TOTAL=0
+ XUNIT_FAILED=0
+ XUNIT_SUCCESS=0
+ XUNIT_TESTCASES_XML=""
+}
\ No newline at end of file