|
|
#!/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 |
|
|
|
|
|
|