2010-05-12 03:42:16 +08:00
|
|
|
#!/bin/bash
|
|
|
|
# //===--------------------------- testit ---------------------------------===//
|
|
|
|
# //
|
2010-05-12 05:36:01 +08:00
|
|
|
# // The LLVM Compiler Infrastructure
|
2010-05-12 03:42:16 +08:00
|
|
|
# //
|
|
|
|
# // This file is distributed under the University of Illinois Open Source
|
|
|
|
# // License. See LICENSE.TXT for details.
|
|
|
|
# //
|
|
|
|
# //===--------------------------------------------------------------------===//
|
|
|
|
|
2012-12-09 08:12:14 +08:00
|
|
|
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
|
|
|
|
|
2012-04-19 08:50:47 +08:00
|
|
|
if [ -z "$CC" ]
|
2010-05-12 03:42:16 +08:00
|
|
|
then
|
2012-02-22 08:20:30 +08:00
|
|
|
if which xcrun >/dev/null
|
|
|
|
then
|
|
|
|
CC="xcrun clang++"
|
|
|
|
else
|
|
|
|
CC=clang++
|
|
|
|
fi
|
2010-05-12 03:42:16 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$OPTIONS" ]
|
|
|
|
then
|
2011-02-15 02:06:10 +08:00
|
|
|
OPTIONS="-std=c++0x -stdlib=libc++"
|
2010-05-12 03:42:16 +08:00
|
|
|
fi
|
2013-01-05 11:21:01 +08:00
|
|
|
OPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support"
|
2010-05-12 03:42:16 +08:00
|
|
|
|
2012-12-09 08:12:14 +08:00
|
|
|
if [ -z "$HEADER_INCLUDE" ]
|
|
|
|
then
|
|
|
|
HEADER_INCLUDE="-I$LIBCXX_ROOT/include"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$SOURCE_LIB" ]
|
|
|
|
then
|
|
|
|
SOURCE_LIB="-L$LIBCXX_ROOT/lib"
|
|
|
|
fi
|
|
|
|
|
2011-10-01 23:34:27 +08:00
|
|
|
case $TRIPLE in
|
|
|
|
*-*-mingw* | *-*-cygwin* | *-*-win*)
|
|
|
|
TEST_EXE=test.exe
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
TEST_EXE=a.out
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-05-12 03:42:16 +08:00
|
|
|
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
|
2011-10-01 23:34:27 +08:00
|
|
|
if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null
|
2010-05-12 03:42:16 +08:00
|
|
|
then
|
2011-10-01 23:34:27 +08:00
|
|
|
rm ./$TEST_EXE
|
2010-05-12 03:42:16 +08:00
|
|
|
echo "$FILE should not compile"
|
|
|
|
let "fail+=1"
|
|
|
|
else
|
|
|
|
let "pass+=1"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
2010-08-22 09:04:38 +08:00
|
|
|
|
2010-05-12 03:42:16 +08:00
|
|
|
if (ls *.pass.cpp &> /dev/null)
|
|
|
|
then
|
|
|
|
for FILE in $(ls *.pass.cpp); do
|
2011-10-01 23:34:27 +08:00
|
|
|
if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
|
2010-05-12 03:42:16 +08:00
|
|
|
then
|
2011-10-01 23:34:27 +08:00
|
|
|
if ./$TEST_EXE
|
2010-05-12 03:42:16 +08:00
|
|
|
then
|
2011-10-01 23:34:27 +08:00
|
|
|
rm ./$TEST_EXE
|
2010-05-12 03:42:16 +08:00
|
|
|
let "pass+=1"
|
|
|
|
else
|
2012-02-29 21:00:44 +08:00
|
|
|
echo "`pwd`/$FILE failed at run time"
|
|
|
|
echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
|
2010-05-12 03:42:16 +08:00
|
|
|
let "fail+=1"
|
2011-10-01 23:34:27 +08:00
|
|
|
rm ./$TEST_EXE
|
2010-05-12 03:42:16 +08:00
|
|
|
fi
|
|
|
|
else
|
2012-02-29 21:00:44 +08:00
|
|
|
echo "`pwd`/$FILE failed to compile"
|
|
|
|
echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
|
2010-05-12 03:42:16 +08:00
|
|
|
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
|
|
|
|
afunc
|
|
|
|
cd ..
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
afunc
|
|
|
|
|
|
|
|
echo "****************************************************"
|
|
|
|
echo "Results for `pwd`:"
|
|
|
|
echo "using `$CC --version`"
|
2011-02-15 02:06:10 +08:00
|
|
|
echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
|
2010-05-12 03:42:16 +08:00
|
|
|
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
|