| #!/bin/bash | |
| # //===--------------------------- testit ---------------------------------===// | |
| # // | |
| # // The LLVM Compiler Infrastructure | |
| # // | |
| # // This file is distributed under the University of Illinois Open Source | |
| # // License. See LICENSE.TXT for details. | |
| # // | |
| # //===--------------------------------------------------------------------===// | |
| if [ -z "$CC" ] | |
| then | |
| if which xcrun >/dev/null | |
| then | |
| CC="xcrun clang++" | |
| else | |
| CC=clang++ | |
| fi | |
| fi | |
| if [ -z "$OPTIONS" ] | |
| then | |
| OPTIONS="-std=c++0x -stdlib=libc++" | |
| fi | |
| case $TRIPLE in | |
| *-*-mingw* | *-*-cygwin* | *-*-win*) | |
| TEST_EXE=test.exe | |
| ;; | |
| *) | |
| TEST_EXE=a.out | |
| ;; | |
| esac | |
| FAIL=0 | |
| PASS=0 | |
| UNIMPLEMENTED=0 | |
| IMPLEMENTED_FAIL=0 | |
| IMPLEMENTED_PASS=0 | |
| function afunc | |
| { | |
| fail=0 | |
| pass=0 | |
| if (ls *.fail.cpp &> /dev/null) | |
| then | |
| for FILE in $(ls *.fail.cpp); do | |
| if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null | |
| then | |
| rm ./$TEST_EXE | |
| echo "$FILE should not compile" | |
| let "fail+=1" | |
| else | |
| let "pass+=1" | |
| fi | |
| done | |
| fi | |
| if (ls *.pass.cpp &> /dev/null) | |
| then | |
| for FILE in $(ls *.pass.cpp); do | |
| if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE | |
| then | |
| if ./$TEST_EXE | |
| then | |
| rm ./$TEST_EXE | |
| let "pass+=1" | |
| else | |
| echo "`pwd`/$FILE failed at run time" | |
| echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS | |
| let "fail+=1" | |
| rm ./$TEST_EXE | |
| fi | |
| else | |
| echo "`pwd`/$FILE failed to compile" | |
| echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS | |
| let "fail+=1" | |
| fi | |
| done | |
| fi | |
| if [ $fail -gt 0 ] | |
| then | |
| echo "failed $fail tests in `pwd`" | |
| let "IMPLEMENTED_FAIL+=1" | |
| fi | |
| if [ $pass -gt 0 ] | |
| then | |
| echo "passed $pass tests in `pwd`" | |
| if [ $fail -eq 0 ] | |
| then | |
| let "IMPLEMENTED_PASS+=1" | |
| fi | |
| fi | |
| if [ $fail -eq 0 -a $pass -eq 0 ] | |
| then | |
| echo "not implemented: `pwd`" | |
| let "UNIMPLEMENTED+=1" | |
| fi | |
| let "FAIL+=$fail" | |
| let "PASS+=$pass" | |
| for FILE in * | |
| do | |
| if [ -d "$FILE" ]; | |
| then | |
| cd $FILE | |
| afunc | |
| cd .. | |
| fi | |
| done | |
| } | |
| afunc | |
| echo "****************************************************" | |
| echo "Results for `pwd`:" | |
| echo "using `$CC --version`" | |
| echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB" | |
| echo "----------------------------------------------------" | |
| echo "sections without tests : $UNIMPLEMENTED" | |
| echo "sections with failures : $IMPLEMENTED_FAIL" | |
| echo "sections without failures: $IMPLEMENTED_PASS" | |
| echo " + ----" | |
| echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))" | |
| echo "----------------------------------------------------" | |
| echo "number of tests failed : $FAIL" | |
| echo "number of tests passed : $PASS" | |
| echo " + ----" | |
| echo "total number of tests : $(($FAIL+$PASS))" | |
| echo "****************************************************" | |
| exit $FAIL |