blob: f137745d1fa2865b6c99e6888e7120f5155c0f4c [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
15if [ $currentdir == "/" ]
16then
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
39if [ -z "$OPTIONS" ]
40then
Howard Hinnantc4cbb5b2011-02-14 18:06:1041OPTIONS="-std=c++0x -stdlib=libc++"
Howard Hinnantbc8d3f92010-05-11 19:42:1642fi
Marshall Clow83e2c4d2013-01-05 03:21:0143OPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support"
Howard Hinnantbc8d3f92010-05-11 19:42:1644
Howard Hinnant7fa77a72012-12-09 00:12:1445if [ -z "$HEADER_INCLUDE" ]
46then
47 HEADER_INCLUDE="-I$LIBCXX_ROOT/include"
48fi
49
50if [ -z "$SOURCE_LIB" ]
51then
52 SOURCE_LIB="-L$LIBCXX_ROOT/lib"
53fi
54
Howard Hinnant8452d212011-10-01 15:34:2755case $TRIPLE in
56 *-*-mingw* | *-*-cygwin* | *-*-win*)
57TEST_EXE=test.exe
58 ;;
59 *)
60 TEST_EXE=a.out
61 ;;
62esac
63
Joerg Sonnenberger34cb0662013-05-02 19:21:3664case $(uname -s) in
65 NetBSD)
66 THREAD_FLAGS=-lpthread
67 ;;
68esac
69
Howard Hinnantbc8d3f92010-05-11 19:42:1670FAIL=0
71PASS=0
72UNIMPLEMENTED=0
73IMPLEMENTED_FAIL=0
74IMPLEMENTED_PASS=0
75
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2476afunc() {
Howard Hinnantbc8d3f92010-05-11 19:42:1677fail=0
78pass=0
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2479if (ls *.fail.cpp > /dev/null 2>&1)
Howard Hinnantbc8d3f92010-05-11 19:42:1680then
81for FILE in $(ls *.fail.cpp); do
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2482if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
Howard Hinnantbc8d3f92010-05-11 19:42:1683then
Howard Hinnant8452d212011-10-01 15:34:2784rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1685echo "$FILE should not compile"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2486fail=$(($fail+1))
Howard Hinnantbc8d3f92010-05-11 19:42:1687else
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2488pass=$(($pass+1))
Howard Hinnantbc8d3f92010-05-11 19:42:1689fi
90done
91fi
Howard Hinnantd2bb0322010-08-22 01:04:3892
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:2493if (ls *.pass.cpp > /dev/null 2>&1)
Howard Hinnantbc8d3f92010-05-11 19:42:1694then
95for FILE in $(ls *.pass.cpp); do
Marshall Clowc3a9b812013-03-26 15:28:3396 if [ "$VERBOSE" ]
97 then
98 echo "Running test: " $FILE
99 fi
Joerg Sonnenberger34cb0662013-05-02 19:21:36100if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS) -o ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16101then
Howard Hinnant8452d212011-10-01 15:34:27102if ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16103then
Howard Hinnant8452d212011-10-01 15:34:27104rm ./$TEST_EXE
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24105pass=$(($pass+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16106else
David Chisnallf2b2cc62012-02-29 13:00:44107echo "`pwd`/$FILE failed at run time"
Joerg Sonnenberger34cb0662013-05-02 19:21:36108echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS)
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24109fail=$(($fail+1))
Howard Hinnant8452d212011-10-01 15:34:27110rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16111fi
112else
David Chisnallf2b2cc62012-02-29 13:00:44113echo "`pwd`/$FILE failed to compile"
Joerg Sonnenberger34cb0662013-05-02 19:21:36114echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS $(test $1 = no || echo $THREAD_FLAGS)
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24115fail=$(($fail+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16116fi
117done
118fi
119
120if [ $fail -gt 0 ]
121then
122echo "failed $fail tests in `pwd`"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24123IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16124fi
125if [ $pass -gt 0 ]
126then
127echo "passed $pass tests in `pwd`"
128if [ $fail -eq 0 ]
129then
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24130IMPLEMENTED_PASS=$((IMPLEMENTED_PASS+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16131fi
132fi
133if [ $fail -eq 0 -a $pass -eq 0 ]
134then
135echo "not implemented: `pwd`"
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24136UNIMPLEMENTED=$(($UNIMPLEMENTED+1))
Howard Hinnantbc8d3f92010-05-11 19:42:16137fi
138
Joerg Sonnenbergerc5e6aa52013-04-23 19:53:24139FAIL=$(($FAIL+$fail))
140PASS=$(($PASS+$pass))
Howard Hinnantbc8d3f92010-05-11 19:42:16141
142for FILE in *
143do
144if [ -d "$FILE" ];
145then
146cd $FILE
Joerg Sonnenberger34cb0662013-05-02 19:21:36147if [ $FILE = thread -o $1 = yes ]; then
148afunc yes
149else
150afunc no
151fi
Howard Hinnantbc8d3f92010-05-11 19:42:16152cd ..
153fi
154done
155}
156
Joerg Sonnenberger34cb0662013-05-02 19:21:36157afunc no
Howard Hinnantbc8d3f92010-05-11 19:42:16158
159echo "****************************************************"
160echo "Results for `pwd`:"
161echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10162echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16163echo "----------------------------------------------------"
164echo "sections without tests : $UNIMPLEMENTED"
165echo "sections with failures : $IMPLEMENTED_FAIL"
166echo "sections without failures: $IMPLEMENTED_PASS"
167echo " + ----"
168echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
169echo "----------------------------------------------------"
170echo "number of tests failed : $FAIL"
171echo "number of tests passed : $PASS"
172echo " + ----"
173echo "total number of tests : $(($FAIL+$PASS))"
174echo "****************************************************"
175
176exit $FAIL