176 lines
3.4 KiB
Plaintext
176 lines
3.4 KiB
Plaintext
|
#!/bin/bash
|
|||
|
# //===--------------------------- testit ---------------------------------===//
|
|||
|
# //
|
|||
|
# // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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
|