0N/A#!/bin/bash
3876N/A
0N/A# TODO: check for GNU mktemp and sed (from coreutils), else exit
0N/A# ---------------------------------------------------------------------
0N/A# solution below is based on
0N/A# <http://www.ooblick.com/weblog/2011/05/12/a-couple-of-shell-quickies/>
2362N/A
0N/A# Wrapper function for GNU mktemp
2362N/Agnu_mktemp() {
0N/A mktemp "$@"
0N/A}
0N/A
0N/A# Wrapper function for BSD mktemp
0N/Absd_mktemp() {
0N/A mktemp -t tmpfile.XXXXXX "$@"
0N/A}
0N/A
0N/A# Try to figure out which wrapper to use
0N/Aif mktemp -V | grep version >/dev/null 2>&1; then
0N/A MKTEMP=gnu_mktemp
2362N/Aelse
2362N/A MKTEMP=bsd_mktemp
2362N/Afi
0N/A
0N/A#mytmpfile=`$MKTEMP`
0N/Aecho "MKTEMP to be used: $MKTEMP"
0N/A
0N/A# ---------------------------------------------------------------------
0N/A
0N/Aecho -e "\n##### Extension Tests #####"
0N/A
0N/Acd "$(dirname "$0")"
0N/A
0N/Ahas_py_coverage=false
0N/Apy_cover_files=$( $MKTEMP )
0N/Afailed_tests=$( $MKTEMP )
0N/A
0N/Aif coverage.py erase >/dev/null 2>/dev/null; then
0N/A has_py_coverage=true
0N/A cover_py_cmd=coverage.py
0N/Aelse
0N/A if coverage erase >/dev/null 2>/dev/null; then
0N/A has_py_coverage=true
0N/A cover_py_cmd=coverage
0N/A else
0N/A if python-coverage erase >/dev/null 2>/dev/null; then
2080N/A has_py_coverage=true
2080N/A cover_py_cmd=python-coverage
3876N/A fi
2400N/A fi
3876N/Afi
2080N/A
if $has_py_coverage; then
echo -e "\nRunning tests with coverage"
fi
#if $has_py_coverage; then
# $cover_py_cmd -e
#fi
function run_py_test() {
echo -e "\n>>>>>> Testing $1 <<<<<<\n"
if $has_py_coverage; then
if ! $cover_py_cmd run -a "$1.test.py"; then
echo "$1" >> $failed_tests
fi
echo "../$1.py" >> $py_cover_files
else
if ! python "$1.test.py"; then
echo "$1" >> $failed_tests
fi
fi
return 0
}
tot_FAILED=0
# TODO: check for GNU mktemp and sed (from coreutils), else exit
# ---------------------------------------------------------------------
# solution below is based on
# <http://notmuchmail.org/pipermail/notmuch/2011/004579.html>
if [ `sed --version >/dev/null 2>/dev/null && echo 1` ]; then
SED_EXTENDED='sed -r' # GNU sed (e.g. on Linux)
else
SED_EXTENDED='sed -E' # BSD sed (e.g. on Mac OS X)
fi
echo -e "sed regex command: $SED_EXTENDED\n"
# ---------------------------------------------------------------------
for testFile in *.test.py; do
if ! run_py_test $( echo $testFile | $SED_EXTENDED 's/^([^.]+)..*$/\1/' ); then
let tot_FAILED++
fi
done
if $has_py_coverage; then
echo -e "\n>> Coverage Report:"
cat $py_cover_files | xargs $cover_py_cmd report
fi
fail=false
if ! test -z "$( cat $failed_tests )"; then
echo -e "\nFailed $( cat $failed_tests | wc -l ) of $( ls -1 *.test.py | wc -l ) extension tests:"
cat $failed_tests | sed 's/^/ - /'
fail=true
fi
echo ""
rm $py_cover_files $failed_tests
if [ x$fail == xtrue ]; then
exit 1
else
exit 0
fi