X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Frun_tests.sh;h=c9c4906cf7c6253f2a49923ad6f1340211b1204e;hb=85f74ac66b7cabcc9cb9a7dde7c189e94f785dff;hp=77689f48353b5a93f9057802fcc20cc55f44d582;hpb=47d8d9ffb55f0343709c719f728598ff97a1e82c;p=bertos.git diff --git a/bertos/run_tests.sh b/bertos/run_tests.sh index 77689f48..c9c4906c 100755 --- a/bertos/run_tests.sh +++ b/bertos/run_tests.sh @@ -1,36 +1,63 @@ #!/bin/bash # # Copyright 2005 Develer S.r.l. (http://www.develer.com/) -# All rights reserved. +# Copyright 2008 Bernie Innocenti # -# Author: Bernie Innocenti -# -# $Id$ +# Version: $Id$ +# Author: Bernie Innocenti # -VERBOSE=1 +# Testsuite output level: +# 0 - quiet +# 1 - progress output +# 2 - build warnings +# 3 - execution output +# 4 - build commands +VERBOSE=${VERBOSE:-1} CC=gcc -CFLAGS="-W -Wall -Wextra -I. -Iemul -std=gnu99 -fno-builtin -D_DEBUG -D_TEST -DARCH=ARCH_EMUL" +#FIXME: -Ibertos/emul should not be needed +CFLAGS="-W -Wall -Wextra -Ibertos -Ibertos/emul -std=gnu99 -fno-builtin -D_DEBUG -DARCH=(ARCH_EMUL|ARCH_UNITTEST)" CXX=g++ CXXFLAGS="$CFLAGS" -TESTS=${TESTS:-`find . -name "*_test.c*"`} - -for test in $TESTS; do - [ $VERBOSE -gt 0 ] && echo "Running $test..." - case "$test" in - *.cpp) - $CXX $CXXFLAGS $test -o test || exit 1 - ./test || exit 1 - rm -f test - ;; - *.c) - $CC $CFLAGS $test -o test || exit 1 - ./test || exit 1 - rm -f test - ;; +TESTS=${TESTS:-`find . \ + \( -name .svn -prune -o -name .git -prune -o -name .hg -prune \) \ + -o -name "*_test.c*" -print` } + +TESTOUT="testout" + +buildout='/dev/null' +runout='/dev/null' +[ "$VERBOSE" -ge 2 ] && buildout='/dev/stdout' +[ "$VERBOSE" -ge 3 ] && runout='/dev/stdout' + +# Needed to get build/exec result code rather than tee's +set -o pipefail + +rm -rf "${TESTOUT}.old" +mv -f "${TESTOUT}" "$TESTOUT.old" +mkdir -p "$TESTOUT" + +for src in $TESTS; do + name="`basename $src | sed -e 's/\.cpp$//' -e 's/\.c$//'`" + exe="./$TESTOUT/$name" + + case "$src" in + *.cpp) BUILDCMD="$CXX $CXXFLAGS $src -o $exe" ;; + *.c) BUILDCMD="$CC $CXXFLAGS $src -o $exe" ;; esac + + [ $VERBOSE -gt 0 ] && echo "Building $name..." + [ $VERBOSE -gt 4 ] && echo " $BUILDCMD" + if $BUILDCMD 2>&1 | tee >$buildout $TESTOUT/$name.build; then + [ $VERBOSE -gt 0 ] && echo "Running $name..." + if ! $exe 2>&1 | tee >$runout $TESTOUT/$name.out; then + echo "FAILED [RUN]: $name" + fi + else + echo "FAILED [BUILD]: $name" + fi done