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