blob: 821292efb5a36786be17c96966e4b444a6167fa8 [file] [log] [blame]
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:241#!/bin/sh
Howard Hinnantbc8d3f92010-05-11 19:42:162# //===--------------------------- testit ---------------------------------===//
3# //
Howard Hinnantf5256e12010-05-11 21:36:014# // The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:165# //
6# // This file is distributed under the University of Illinois Open Source
7# // License. See LICENSE.TXT for details.
8# //
9# //===--------------------------------------------------------------------===//
10
Howard Hinnant7fa77a72012-12-09 00:12:1411currentpath=`pwd`
12origpath=$currentpath
13currentdir=`basename $currentpath`
14while [ $currentdir != "test" ]; do
Joerg Sonnenberger4dca0442013-07-04 15:11:1015if [ $currentdir = "/" ]
Howard Hinnant7fa77a72012-12-09 00:12:1416then
17echo "current directory must be in or under \"test\"."
18exit 1
19fi
20cd ..
21currentpath=`pwd`
22currentdir=`basename $currentpath`
23done
24
25cd ..
26LIBCXX_ROOT=`pwd`
27cd $origpath
28
Richard Smith9efdc0b2012-04-19 00:50:4729if [ -z "$CC" ]
Howard Hinnantbc8d3f92010-05-11 19:42:1630then
Dave Zarzyckib9344c22012-02-22 00:20:3031if which xcrun >/dev/null
32then
33CC="xcrun clang++"
34else
35CC=clang++
36fi
Howard Hinnantbc8d3f92010-05-11 19:42:1637fi
38
Marshall Clow2f78c0d2014-01-14 17:00:4039if [ -z "$CXX_LANG" ]
40then
Marshall Clow928bb682014-01-14 17:04:0641 CXX_LANG=c++11
Marshall Clow2f78c0d2014-01-14 17:00:4042fi
Howard Hinnantbc8d3f92010-05-11 19:42:1643if [ -z "$OPTIONS" ]
44then
Marshall Clow2f78c0d2014-01-14 17:00:4045OPTIONS="-std=${CXX_LANG} -stdlib=libc++"
Howard Hinnantbc8d3f92010-05-11 19:42:1646fi
Marshall Clow83e2c4d2013-01-05 03:21:0147OPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support"
Howard Hinnantbc8d3f92010-05-11 19:42:1648
Howard Hinnant7fa77a72012-12-09 00:12:1449if [ -z "$HEADER_INCLUDE" ]
50then
51 HEADER_INCLUDE="-I$LIBCXX_ROOT/include"
52fi
53
54if [ -z "$SOURCE_LIB" ]
55then
56 SOURCE_LIB="-L$LIBCXX_ROOT/lib"
57fi
58
Howard Hinnant8452d212011-10-01 15:34:2759case $TRIPLE in
60 *-*-mingw* | *-*-cygwin* | *-*-win*)
61TEST_EXE=test.exe
62 ;;
63 *)
64 TEST_EXE=a.out
65 ;;
66esac
67
Joerg Sonnenberger34cb0662013-05-02 19:21:3668case $(uname -s) in
69 NetBSD)
70 THREAD_FLAGS=-lpthread
71 ;;
72esac
73
Howard Hinnantbc8d3f92010-05-11 19:42:1674FAIL=0
75PASS=0
76UNIMPLEMENTED=0
77IMPLEMENTED_FAIL=0
78IMPLEMENTED_PASS=0
79
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2480afunc() {
Howard Hinnantbc8d3f92010-05-11 19:42:1681fail=0
82pass=0
Marshall Clowbeee5e42014-01-15 16:28:4283if (ls ${TEST_PREFIX}*fail.cpp > /dev/null 2>&1)
Howard Hinnantbc8d3f92010-05-11 19:42:1684then
Marshall Clowbeee5e42014-01-15 16:28:4285for FILE in $(ls ${TEST_PREFIX}*fail.cpp); do
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2486if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
Howard Hinnantbc8d3f92010-05-11 19:42:1687then
Howard Hinnant8452d212011-10-01 15:34:2788rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1689echo "$FILE should not compile"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2490fail=$(($fail+1))
Howard Hinnantbc8d3f92010-05-11 19:42:1691else
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2492pass=$(($pass+1))
Howard Hinnantbc8d3f92010-05-11 19:42:1693fi
94done
95fi
Howard Hinnantd2bb0322010-08-22 01:04:3896
Marshall Clowbeee5e42014-01-15 16:28:4297if (ls ${TEST_PREFIX}*pass.cpp > /dev/null 2>&1)
Howard Hinnantbc8d3f92010-05-11 19:42:1698then
Marshall Clowbeee5e42014-01-15 16:28:4299for FILE in $(ls ${TEST_PREFIX}*pass.cpp); do
Marshall Clowc3a9b812013-03-26 15:28:33100 if [ "$VERBOSE" ]
101 then
102 echo "Running test: " $FILE
103 fi
Joerg Sonnenberger34cb0662013-05-02 19:21:36104if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) -o ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16105then
Howard Hinnant8452d212011-10-01 15:34:27106if ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16107then
Howard Hinnant8452d212011-10-01 15:34:27108rm ./$TEST_EXE
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24109pass=$(($pass+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16110else
David Chisnallf2b2cc62012-02-29 13:00:44111echo "`pwd`/$FILE failed at run time"
Joerg Sonnenberger34cb0662013-05-02 19:21:36112echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS)
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24113fail=$(($fail+1))
Howard Hinnant8452d212011-10-01 15:34:27114rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16115fi
116else
David Chisnallf2b2cc62012-02-29 13:00:44117echo "`pwd`/$FILE failed to compile"
Joerg Sonnenberger34cb0662013-05-02 19:21:36118echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS)
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24119fail=$(($fail+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16120fi
121done
122fi
123
124if [ $fail -gt 0 ]
125then
126echo "failed $fail tests in `pwd`"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24127IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16128fi
129if [ $pass -gt 0 ]
130then
131echo "passed $pass tests in `pwd`"
132if [ $fail -eq 0 ]
133then
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24134IMPLEMENTED_PASS=$((IMPLEMENTED_PASS+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16135fi
136fi
137if [ $fail -eq 0 -a $pass -eq 0 ]
138then
139echo "not implemented: `pwd`"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24140UNIMPLEMENTED=$(($UNIMPLEMENTED+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16141fi
142
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24143FAIL=$(($FAIL+$fail))
144PASS=$(($PASS+$pass))
Howard Hinnantbc8d3f92010-05-11 19:42:16145
146for FILE in *
147do
148if [ -d "$FILE" ];
149then
150cd $FILE
Joerg Sonnenberger34cb0662013-05-02 19:21:36151if [ $FILE = thread -o $1 = yes ]; then
152afunc yes
153else
154afunc no
155fi
Howard Hinnantbc8d3f92010-05-11 19:42:16156cd ..
157fi
158done
159}
160
Joerg Sonnenberger34cb0662013-05-02 19:21:36161afunc no
Howard Hinnantbc8d3f92010-05-11 19:42:16162
163echo "****************************************************"
164echo "Results for `pwd`:"
165echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10166echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16167echo "----------------------------------------------------"
168echo "sections without tests : $UNIMPLEMENTED"
169echo "sections with failures : $IMPLEMENTED_FAIL"
170echo "sections without failures: $IMPLEMENTED_PASS"
171echo " + ----"
172echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
173echo "----------------------------------------------------"
174echo "number of tests failed : $FAIL"
175echo "number of tests passed : $PASS"
176echo " + ----"
177echo "total number of tests : $(($FAIL+$PASS))"
178echo "****************************************************"
179
180exit $FAIL