|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
#
|
|
|
|
|
# Test script runner for MATLAB2TIKZ continuous integration
|
|
|
|
|
#
|
|
|
|
|
# You can influence the execution by passing one or two parameters
|
|
|
|
|
# to this function, as
|
|
|
|
|
#
|
|
|
|
|
# ./runtests.sh RUNNER SWITCHES
|
|
|
|
|
#
|
|
|
|
|
# Arguments:
|
|
|
|
|
# - RUNNER: (path of) the binary you want to use to execute the tests
|
|
|
|
|
# default value: "octave"
|
|
|
|
|
# - SWITCHES: switches you want to pass to the executable
|
|
|
|
|
# default value: * "-nodesktop -r" if runner contains "matlab"
|
|
|
|
|
# * "--no-gui --eval" if runner contains "octave" and otherwise
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# Used resources:
|
|
|
|
|
# - http://askubuntu.com/questions/299710/how-to-determine-if-a-string-is-a-substring-of-another-in-bash
|
|
|
|
|
# - http://www.thegeekstuff.com/2010/07/bash-case-statement/
|
|
|
|
|
# - http://stackoverflow.com/questions/229551/string-contains-in-bash
|
|
|
|
|
# - http://stackoverflow.com/questions/2870992/automatic-exit-from-bash-shell-script-on-error
|
|
|
|
|
# - http://www.davidpashley.com/articles/writing-robust-shell-scripts/
|
|
|
|
|
# - http://stackoverflow.com/questions/13998941/how-can-i-propagate-an-exit-status-from-expect-to-its-parent-bash-script
|
|
|
|
|
# - http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html
|
|
|
|
|
|
|
|
|
|
## Make sure some failures are detected by the CI runners
|
|
|
|
|
function exitIfError {
|
|
|
|
|
# pass "$?" as argument: i.e. the exit status of the last call
|
|
|
|
|
if [ "$1" -ne 0 ]; then
|
|
|
|
|
exit $1;
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
## Handle Runner and Switches variables
|
|
|
|
|
Runner=$1
|
|
|
|
|
Switches=$2
|
|
|
|
|
if [ -z "$Runner" ] ; then
|
|
|
|
|
Runner="octave"
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "$Switches" ] ; then
|
|
|
|
|
case "$Runner" in
|
|
|
|
|
*matlab* )
|
|
|
|
|
Switches="-nodesktop -r"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
*octave* )
|
|
|
|
|
Switches="--no-gui --eval"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
* )
|
|
|
|
|
# Fall back to Octave switches
|
|
|
|
|
Switches="--no-gui --eval"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
## Make sure MATLAB/Octave know the intent
|
|
|
|
|
# note: the export is required
|
|
|
|
|
export CONTINUOUS_INTEGRATION=true
|
|
|
|
|
export CI=true
|
|
|
|
|
|
|
|
|
|
## Actually run the test suite
|
|
|
|
|
cd test
|
|
|
|
|
TESTDIR=`pwd`
|
|
|
|
|
# also CD in MATLAB/Octave to make sure that startup files
|
|
|
|
|
# cannot play any role in setting the path
|
|
|
|
|
${Runner} ${Switches} "cd('${TESTDIR}'); runMatlab2TikzTests"
|
|
|
|
|
exitIfError $?
|
|
|
|
|
cd ..
|
|
|
|
|
|
|
|
|
|
## Post-processing
|
|
|
|
|
|
|
|
|
|
# convert MD report into HTML using pandoc if available
|
|
|
|
|
MDFILE="test/results.test.md"
|
|
|
|
|
if [ ! -z `which pandoc` ]; then
|
|
|
|
|
if [ -f $MDFILE ]; then
|
|
|
|
|
HTMLFILE=${MDFILE/md/html}
|
|
|
|
|
# replace the emoji while we're at it
|
|
|
|
|
pandoc -f markdown -t html $MDFILE -o $HTMLFILE
|
|
|
|
|
sed -i -- 's/:heavy_exclamation_mark:/❗️/g' $HTMLFILE
|
|
|
|
|
sed -i -- 's/:white_check_mark:/✅/g' $HTMLFILE
|
|
|
|
|
sed -i -- 's/:grey_question:/❔/g' $HTMLFILE
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|