medit/moo/medit-app/run-tests.sh

93 lines
2.7 KiB
Bash
Executable File

#! /bin/sh
coverage=false
uninstalled=false
for arg; do
case $arg in
--installed)
uninstalled=false
;;
--uninstalled)
uninstalled=true
;;
--coverage)
coverage=true
;;
*)
echo "Unknown option $arg"
exit 1
;;
esac
done
relpath() {
from=`cd $1 && pwd`
to=`cd $2 && pwd`
$PYTHON -c 'import sys; import os; print os.path.relpath(sys.argv[2], sys.argv[1])' $from $to
}
if $uninstalled; then
if ! [ -e ./medit ]; then
echo "file ./medit doesn't exist"
exit 1
fi
medit_cmd_line="./medit --ut --ut-uninstalled"
else
if [ -z $bindir ]; then
medit=`which medit`
else
medit=$bindir/medit$EXEEXT
fi
if ! [ -e $medit ]; then
echo "file $medit doesn't exist"
exit 1
fi
if [ ./medit -nt $medit ]; then
echo "file ./medit is newer than '$medit', did you forget run make install?"
exit 1
fi
medit_cmd_line="$medit --ut"
fi
if $coverage; then
medit_cmd_line="$medit_cmd_line --ut-coverage called-functions"
fi
medit_cmd_line="$medit_cmd_line --ut-dir `relpath . $srcdir/medit-app/data`"
echo "$medit_cmd_line"
$medit_cmd_line || exit $?
if $coverage; then
sort called-functions > called-functions.tmp || exit 1
mv called-functions.tmp called-functions || exit 1
moo_xml=$top_srcdir/api/moo.xml
gtk_xml=$top_srcdir/api/gtk.xml
[ -f $moo_xml ] || { echo "file $moo_xml doesn't exist"; exit 1; }
[ -f $gtk_xml ] || { echo "file $gtk_xml doesn't exist"; exit 1; }
$PYTHON $print_functions $moo_xml $gtk_xml --output-lua=lua-functions.tmp --output-python=python-functions.tmp || exit 1
sort lua-functions.tmp > lua-functions.tmp2 && mv lua-functions.tmp2 lua-functions || exit 1
sort python-functions.tmp > python-functions.tmp2 && mv python-functions.tmp2 python-functions || exit 1
cat lua-functions python-functions | sort | uniq > all-functions
rm -f *-functions.tmp*
grep --extended-regexp 'lua\.' called-functions | sed --regexp-extended 's/(lua|python)\.//g' | sort | uniq > lua-called-functions
grep --extended-regexp 'python\.' called-functions | sed --regexp-extended 's/(lua|python)\.//g' | sort | uniq > python-called-functions
sed --regexp-extended 's/(lua|python)\.//g' called-functions | sort | uniq > all-called-functions
comm -3 -2 lua-functions lua-called-functions > not-covered-lua-functions
comm -3 -2 python-functions python-called-functions > not-covered-python-functions
comm -3 -2 all-functions all-called-functions > not-covered-functions
if [ -z "$IGNORE_COVERAGE" ] && [ -s not-covered-functions ]; then
echo "*** Not all functions are covered, see file not-covered-functions"
exit 1
else
rm -f *-functions *-called-functions called-functions not-covered-*-functions not-covered-functions
exit 0
fi
fi