| #!/bin/sh | 
 | # //===--------------------------- testit ---------------------------------===// | 
 | # // | 
 | # //                     The LLVM Compiler Infrastructure | 
 | # // | 
 | # // This file is distributed under the University of Illinois Open Source | 
 | # // License. See LICENSE.TXT for details. | 
 | # // | 
 | # //===--------------------------------------------------------------------===// | 
 |  | 
 | currentpath=`pwd` | 
 | origpath=$currentpath | 
 | currentdir=`basename $currentpath` | 
 | while [ $currentdir != "test" ]; do | 
 | 	if [ $currentdir = "/" ] | 
 | 	then | 
 | 		echo "current directory must be in or under \"test\"." | 
 | 		exit 1 | 
 | 	fi | 
 | 	cd .. | 
 | 	currentpath=`pwd` | 
 | 	currentdir=`basename $currentpath` | 
 | done | 
 |  | 
 | cd .. | 
 | LIBCXX_ROOT=`pwd` | 
 | cd $origpath | 
 |  | 
 | if [ -z "$CC" ] | 
 | then | 
 | 	if which xcrun >/dev/null | 
 | 	then | 
 | 		CC="xcrun clang++" | 
 | 	else | 
 | 		CC=clang++ | 
 | 	fi | 
 | fi | 
 |  | 
 | if [ -z "$CXX_LANG" ] | 
 | then | 
 |     CXX_LANG=c++11 | 
 | fi | 
 | if [ -z "$OPTIONS" ] | 
 | then | 
 | 	OPTIONS="-std=${CXX_LANG} -stdlib=libc++" | 
 | fi | 
 | OPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support" | 
 |  | 
 | if [ -z "$HEADER_INCLUDE" ] | 
 | then | 
 |        HEADER_INCLUDE="-I$LIBCXX_ROOT/include" | 
 | fi | 
 |  | 
 | if [ -z "$SOURCE_LIB" ] | 
 | then | 
 |        SOURCE_LIB="-L$LIBCXX_ROOT/lib" | 
 | fi | 
 |  | 
 | case $TRIPLE in | 
 |   *-*-mingw* | *-*-cygwin* | *-*-win*) | 
 | 	TEST_EXE=test.exe | 
 |     ;; | 
 |   *) | 
 |     TEST_EXE=a.out | 
 |     ;; | 
 | esac | 
 |  | 
 | case $(uname -s) in | 
 |    NetBSD) | 
 |      THREAD_FLAGS=-lpthread | 
 |      ;; | 
 | esac | 
 |  | 
 | FAIL=0 | 
 | PASS=0 | 
 | UNIMPLEMENTED=0 | 
 | IMPLEMENTED_FAIL=0 | 
 | IMPLEMENTED_PASS=0 | 
 |  | 
 | afunc() { | 
 | 	fail=0 | 
 | 	pass=0 | 
 | 	if (ls ${TEST_PREFIX}*fail.cpp > /dev/null 2>&1) | 
 | 	then | 
 | 		for FILE in $(ls ${TEST_PREFIX}*fail.cpp); do | 
 | 			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1 | 
 | 			then | 
 | 				rm ./$TEST_EXE | 
 | 				echo "$FILE should not compile" | 
 | 				fail=$(($fail+1)) | 
 | 			else | 
 | 				pass=$(($pass+1)) | 
 | 			fi | 
 | 		done | 
 | 	fi | 
 |  | 
 | 	if (ls ${TEST_PREFIX}*pass.cpp > /dev/null 2>&1) | 
 | 	then | 
 | 		for FILE in $(ls ${TEST_PREFIX}*pass.cpp); do | 
 |             if [ "$VERBOSE" ] | 
 |             then | 
 |              	echo "Running test: " $FILE | 
 |             fi | 
 | 			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) -o ./$TEST_EXE | 
 | 			then | 
 | 				if ./$TEST_EXE | 
 | 				then | 
 | 					rm ./$TEST_EXE | 
 | 					pass=$(($pass+1)) | 
 | 				else | 
 | 					echo "`pwd`/$FILE failed at run time" | 
 | 					echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) | 
 | 					fail=$(($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 $(test $1 = no || echo $THREAD_FLAGS) | 
 | 				fail=$(($fail+1)) | 
 | 			fi | 
 | 		done | 
 | 	fi | 
 |  | 
 | 	if [ $fail -gt 0 ] | 
 | 	then | 
 | 		echo "failed $fail tests in `pwd`" | 
 | 		IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL+1)) | 
 | 	fi | 
 | 	if [ $pass -gt 0 ] | 
 | 	then | 
 | 		echo "passed $pass tests in `pwd`" | 
 | 		if [ $fail -eq 0 ] | 
 | 		then | 
 | 			IMPLEMENTED_PASS=$((IMPLEMENTED_PASS+1)) | 
 | 		fi | 
 | 	fi | 
 | 	if [ $fail -eq 0 -a $pass -eq 0 ] | 
 | 	then | 
 | 		echo "not implemented:  `pwd`" | 
 | 		UNIMPLEMENTED=$(($UNIMPLEMENTED+1)) | 
 | 	fi | 
 |  | 
 | 	FAIL=$(($FAIL+$fail)) | 
 | 	PASS=$(($PASS+$pass)) | 
 |  | 
 | 	for FILE in * | 
 | 	do | 
 | 		if [ -d "$FILE" ]; | 
 | 		then | 
 | 			cd $FILE | 
 | 			if [ $FILE = thread -o $1 = yes ]; then | 
 | 				afunc yes | 
 | 			else | 
 | 				afunc no | 
 | 			fi | 
 | 			cd .. | 
 | 		fi | 
 | 	done | 
 | } | 
 |  | 
 | afunc no | 
 |  | 
 | 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 |