git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@199318 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			181 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |