1a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner#!/bin/sh 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# //===--------------------------- testit ---------------------------------===// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // The LLVM Compiler Infrastructure 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // This file is distributed under the University of Illinois Open Source 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // License. See LICENSE.TXT for details. 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# // 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner# //===--------------------------------------------------------------------===// 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnercurrentpath=`pwd` 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerorigpath=$currentpath 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnercurrentdir=`basename $currentpath` 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerwhile [ $currentdir != "test" ]; do 15ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner if [ $currentdir = "/" ] 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "current directory must be in or under \"test\"." 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner exit 1 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner cd .. 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner currentpath=`pwd` 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner currentdir=`basename $currentpath` 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerdone 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnercd .. 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerLIBCXX_ROOT=`pwd` 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnercd $origpath 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerif [ -z "$CC" ] 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerthen 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if which xcrun >/dev/null 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner CC="xcrun clang++" 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner else 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner CC=clang++ 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerfi 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerif [ -z "$OPTIONS" ] 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerthen 41ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner OPTIONS="-std=c++11 -stdlib=libc++" 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerfi 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerOPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support" 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerif [ -z "$HEADER_INCLUDE" ] 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerthen 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner HEADER_INCLUDE="-I$LIBCXX_ROOT/include" 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerfi 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerif [ -z "$SOURCE_LIB" ] 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerthen 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner SOURCE_LIB="-L$LIBCXX_ROOT/lib" 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerfi 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnercase $TRIPLE in 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner *-*-mingw* | *-*-cygwin* | *-*-win*) 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner TEST_EXE=test.exe 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ;; 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner *) 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner TEST_EXE=a.out 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ;; 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turneresac 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 64ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turnercase $(uname -s) in 65ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner NetBSD) 66ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner THREAD_FLAGS=-lpthread 67ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner ;; 68ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turneresac 69ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerFAIL=0 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerPASS=0 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerUNIMPLEMENTED=0 73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerIMPLEMENTED_FAIL=0 74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' TurnerIMPLEMENTED_PASS=0 75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 76a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerafunc() { 77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fail=0 78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner pass=0 79a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if (ls *.fail.cpp > /dev/null 2>&1) 80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner for FILE in $(ls *.fail.cpp); do 82a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1 83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 84b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner rm ./$TEST_EXE 85b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "$FILE should not compile" 86a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fail=$(($fail+1)) 87b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner else 88a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner pass=$(($pass+1)) 89b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 90b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner done 91b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 93a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if (ls *.pass.cpp > /dev/null 2>&1) 94b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 95b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner for FILE in $(ls *.pass.cpp); do 96a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ "$VERBOSE" ] 97a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner then 98a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "Running test: " $FILE 99a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 100ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) -o ./$TEST_EXE 101b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 102b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if ./$TEST_EXE 103b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 104b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner rm ./$TEST_EXE 105a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner pass=$(($pass+1)) 106b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner else 107b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "`pwd`/$FILE failed at run time" 108ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) 109a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fail=$(($fail+1)) 110b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner rm ./$TEST_EXE 111b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 112b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner else 113b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "`pwd`/$FILE failed to compile" 114ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) 115a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fail=$(($fail+1)) 116b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 117b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner done 118b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 119b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 120b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if [ $fail -gt 0 ] 121b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 122b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "failed $fail tests in `pwd`" 123a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL+1)) 124b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 125b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if [ $pass -gt 0 ] 126b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 127b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "passed $pass tests in `pwd`" 128b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if [ $fail -eq 0 ] 129b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 130a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner IMPLEMENTED_PASS=$((IMPLEMENTED_PASS+1)) 131b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 132b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 133b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if [ $fail -eq 0 -a $pass -eq 0 ] 134b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 135b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner echo "not implemented: `pwd`" 136a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner UNIMPLEMENTED=$(($UNIMPLEMENTED+1)) 137b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 138b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 139a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner FAIL=$(($FAIL+$fail)) 140a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner PASS=$(($PASS+$pass)) 141b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 142b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner for FILE in * 143b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner do 144b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner if [ -d "$FILE" ]; 145b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner then 146b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner cd $FILE 147ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner if [ $FILE = thread -o $1 = yes ]; then 148ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner afunc yes 149ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner else 150ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner afunc no 151ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner fi 152b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner cd .. 153b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner fi 154b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner done 155b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 156b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 157ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turnerafunc no 158b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 159b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "****************************************************" 160b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "Results for `pwd`:" 161b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "using `$CC --version`" 162b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB" 163b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "----------------------------------------------------" 164b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "sections without tests : $UNIMPLEMENTED" 165b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "sections with failures : $IMPLEMENTED_FAIL" 166b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "sections without failures: $IMPLEMENTED_PASS" 167b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho " + ----" 168b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))" 169b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "----------------------------------------------------" 170b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "number of tests failed : $FAIL" 171b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "number of tests passed : $PASS" 172b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho " + ----" 173b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "total number of tests : $(($FAIL+$PASS))" 174b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerecho "****************************************************" 175b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 176b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerexit $FAIL 177