111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#!/bin/sh 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# //===--------------------------- testit ---------------------------------===// 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // The LLVM Compiler Infrastructure 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // This file is distributed under the University of Illinois Open Source 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // License. See LICENSE.TXT for details. 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# // 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# //===--------------------------------------------------------------------===// 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcurrentpath=`pwd` 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertorigpath=$currentpath 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcurrentdir=`basename $currentpath` 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertwhile [ $currentdir != "test" ]; do 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $currentdir = "/" ] 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "current directory must be in or under \"test\"." 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert exit 1 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert cd .. 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert currentpath=`pwd` 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert currentdir=`basename $currentpath` 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdone 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcd .. 2611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertLIBCXX_ROOT=`pwd` 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcd $origpath 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$CC" ] 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if which xcrun >/dev/null 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CC="xcrun clang++" 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert else 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CC=clang++ 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$CXX_LANG" ] 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CXX_LANG=c++11 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$OPTIONS" ] 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert OPTIONS="-std=${CXX_LANG} -stdlib=libc++ -nostdinc++" 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 4711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertOPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support" 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$HEADER_INCLUDE" ] 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HEADER_INCLUDE="-I$LIBCXX_ROOT/include" 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$SOURCE_LIB" ] 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert SOURCE_LIB="-L$LIBCXX_ROOT/lib" 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcase $TRIPLE in 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-*-mingw* | *-*-cygwin* | *-*-win*) 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TEST_EXE=test.exe 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *) 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TEST_EXE=a.out 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertesac 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcase $(uname -s) in 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NetBSD) 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert THREAD_FLAGS=-lpthread 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertesac 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertFAIL=0 7511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertPASS=0 7611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertUNIMPLEMENTED=0 7711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertIMPLEMENTED_FAIL=0 7811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertIMPLEMENTED_PASS=0 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertafunc() { 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fail=0 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert pass=0 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if (ls ${TEST_PREFIX}*fail.cpp > /dev/null 2>&1) 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert for FILE in $(ls ${TEST_PREFIX}*fail.cpp); do 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rm ./$TEST_EXE 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "$FILE should not compile" 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fail=$(($fail+1)) 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert else 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert pass=$(($pass+1)) 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert done 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if (ls ${TEST_PREFIX}*pass.cpp > /dev/null 2>&1) 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert for FILE in $(ls ${TEST_PREFIX}*pass.cpp); do 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ "$VERBOSE" ] 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "Running test: " $FILE 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) -o ./$TEST_EXE 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if ./$TEST_EXE 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rm ./$TEST_EXE 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert pass=$(($pass+1)) 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert else 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "`pwd`/$FILE failed at run time" 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fail=$(($fail+1)) 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rm ./$TEST_EXE 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert else 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "`pwd`/$FILE failed to compile" 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fail=$(($fail+1)) 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert done 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $fail -gt 0 ] 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "failed $fail tests in `pwd`" 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL+1)) 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $pass -gt 0 ] 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "passed $pass tests in `pwd`" 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $fail -eq 0 ] 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IMPLEMENTED_PASS=$((IMPLEMENTED_PASS+1)) 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $fail -eq 0 -a $pass -eq 0 ] 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "not implemented: `pwd`" 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert UNIMPLEMENTED=$(($UNIMPLEMENTED+1)) 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FAIL=$(($FAIL+$fail)) 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PASS=$(($PASS+$pass)) 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert for FILE in * 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert do 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ -d "$FILE" ]; 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert cd $FILE 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ $FILE = thread -o $1 = yes ]; then 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert afunc yes 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert else 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert afunc no 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert cd .. 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert done 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertafunc no 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "****************************************************" 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "Results for `pwd`:" 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "using `$CC --version`" 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB" 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "----------------------------------------------------" 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "sections without tests : $UNIMPLEMENTED" 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "sections with failures : $IMPLEMENTED_FAIL" 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "sections without failures: $IMPLEMENTED_PASS" 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho " + ----" 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))" 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "----------------------------------------------------" 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "number of tests failed : $FAIL" 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "number of tests passed : $PASS" 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho " + ----" 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "total number of tests : $(($FAIL+$PASS))" 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertecho "****************************************************" 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertexit $FAIL 181