Files
modules/script/mt
2021-07-30 10:11:54 +02:00

117 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# MT, run specific part of the test suite
# Copyright (C) 2018-2021 Xavier Delaruelle
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##########################################################################
set -u
# print message on stderr then exit
echo_error() {
echo -e "ERROR: $1" >&2
exit 1
}
if [ ! -e tcl/main.tcl.in ]; then
echo_error "Not in correct directory"
fi
# make bin, should use GNU make
command -v gmake >/dev/null
if [ $? -eq 0 ]; then
make=gmake
else
make=make
fi
# make target
target=test
testserie=modules
setuptestfiles=(00/005 00/006 00/010 00/050 00/080 00/085)
if [ $# -gt 0 ]; then
if [ "$1" = "quick" ]; then
export QUICKTEST=1
shift
elif [ "$1" = "cov" ]; then
export COVERAGE=y
shift
elif [ "$1" = "install" ]; then
target=testinstall
testserie=install
setuptestfiles=(00/005 00/006 00/010 00/011)
shift
fi
fi
if [ $# -gt 0 ]; then
# build list of test files to run test on
declare -a testfiles
for i in ${setuptestfiles[@]} ${@}; do
j=${i##*/}
i=${i%/*}
# add all test files if passed a full section number or a test file
# from collection section (this section must be run entirely)
if [ "$j" == "$i" ] || [ "$i" == "61" ]; then
testfiles+=(testsuite/$testserie.${i}*/*.exp)
else
testfiles+=(testsuite/$testserie.${i}*/{010,999,$j}*.exp)
fi
done
# get file name of selected test files (runtest requires .exp file name)
declare -a testfnames=()
for i in "${testfiles[@]}"; do
if [ -e $i ]; then
fname=${i##*/}
# build list of unique file names
if [ ${#testfnames[@]} -eq 0 ]\
|| [[ ! " ${testfnames[*]} " =~ " $fname " ]]; then
testfnames+=($fname)
fi
fi
done
# pass list to make target
export RUNTESTFILES="${testfnames[*]}"
fi
# attempt to get enhanced diff tool but disable this retrieval if download
# tentative fails
if [ ! -e .noicdiff ]; then
$make icdiff || touch .noicdiff
fi
export RUNTESTFLAGS='-v -v >/dev/null 2>&1'
$make $target
ret=$?
# highlight failed tests
retreview=0
if [ -e $testserie.log ]; then
script/mtreview $testserie.log
retreview+=$?
fi
# testsuite ok but mtreview failed to run
if [ $ret -eq 0 ] && [ $retreview -ne 0 ]; then
ret=$retreview
fi
exit $ret
# vim:set tabstop=3 shiftwidth=3 expandtab autoindent: