libcxx initial import
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@103490 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/testit b/test/testit
new file mode 100755
index 0000000..b06e8e5
--- /dev/null
+++ b/test/testit
@@ -0,0 +1,175 @@
+#!/bin/bash
+# //===--------------------------- testit ---------------------------------===//
+# //
+# // ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊThe LLVM Compiler Infrastructure
+# //
+# // This file is distributed under the University of Illinois Open Source
+# // License. See LICENSE.TXT for details.
+# //
+# //===--------------------------------------------------------------------===//
+
+BACKUP="../"
+
+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`
+ BACKUP="../"$BACKUP
+done
+cd $origpath
+
+if [ -z $CC ]
+then
+ CC=g++
+fi
+
+auto_header=0
+
+if [ -z $HEADER_INCLUDE ]
+then
+ HEADER_INCLUDE=$BACKUP"include"
+ let "auto_header+=1"
+fi
+
+auto_lib=0
+
+SOURCE_LIB=/usr/lib/libc++.dylib
+#SOURCE_LIB=/Users/hinnant/Development/libcpp/lib/libc++.a
+
+if [ -z $SOURCE_LIB ]
+then
+ SOURCE_LIB=$BACKUP"lib/libc++.dylib"
+ let "auto_lib+=1"
+fi
+
+if [ -z "$OPTIONS" ]
+then
+ OPTIONS="-nostdinc++ -nodefaultlibs /usr/lib/libSystem.B.dylib -arch `arch`"
+fi
+
+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 -I$HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null
+ then
+ rm ./a.out
+ 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 -I$HEADER_INCLUDE $SOURCE_LIB $FILE
+ then
+ if ./a.out
+ then
+ rm ./a.out
+ let "pass+=1"
+ else
+ echo "$FILE failed at run time"
+ let "fail+=1"
+ rm ./a.out
+ fi
+ else
+ echo "$FILE failed to compile"
+ 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
+ if [ $auto_header -eq 1 ]
+ then
+ SAVE_HEADER_INCLUDE=$HEADER_INCLUDE
+ HEADER_INCLUDE="../"$HEADER_INCLUDE
+ fi
+ if [ $auto_lib -eq 1 ]
+ then
+ SAVE_SOURCE_LIB=$SOURCE_LIB
+ SOURCE_LIB="../"$SOURCE_LIB
+ fi
+
+ afunc
+
+ if [ $auto_header -eq 1 ]
+ then
+ HEADER_INCLUDE=${HEADER_INCLUDE:3}
+ fi
+ if [ $auto_lib -eq 1 ]
+ then
+ SOURCE_LIB=${SOURCE_LIB:3}
+ fi
+ cd ..
+ fi
+ done
+}
+
+afunc
+
+echo "****************************************************"
+echo "Results for `pwd`:"
+echo "using `$CC --version`"
+echo "with $OPTIONS -I$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