blob: eea3858a628a07c5bac1721e2f6880f51388142f [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:161#!/bin/bash
2# //===--------------------------- 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
Richard Smith9efdc0b2012-04-19 00:50:4711if [ -z "$CC" ]
Howard Hinnantbc8d3f92010-05-11 19:42:1612then
Dave Zarzyckib9344c22012-02-22 00:20:3013if which xcrun >/dev/null
14then
15CC="xcrun clang++"
16else
17CC=clang++
18fi
Howard Hinnantbc8d3f92010-05-11 19:42:1619fi
20
21if [ -z "$OPTIONS" ]
22then
Howard Hinnantc4cbb5b2011-02-14 18:06:1023OPTIONS="-std=c++0x -stdlib=libc++"
Howard Hinnantbc8d3f92010-05-11 19:42:1624fi
25
Howard Hinnant8452d212011-10-01 15:34:2726case $TRIPLE in
27 *-*-mingw* | *-*-cygwin* | *-*-win*)
28TEST_EXE=test.exe
29 ;;
30 *)
31 TEST_EXE=a.out
32 ;;
33esac
34
Howard Hinnantbc8d3f92010-05-11 19:42:1635FAIL=0
36PASS=0
37UNIMPLEMENTED=0
38IMPLEMENTED_FAIL=0
39IMPLEMENTED_PASS=0
40
41function afunc
42{
43fail=0
44pass=0
45if (ls *.fail.cpp &> /dev/null)
46then
47for FILE in $(ls *.fail.cpp); do
Howard Hinnant8452d212011-10-01 15:34:2748if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null
Howard Hinnantbc8d3f92010-05-11 19:42:1649then
Howard Hinnant8452d212011-10-01 15:34:2750rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1651echo "$FILE should not compile"
52let "fail+=1"
53else
54let "pass+=1"
55fi
56done
57fi
Howard Hinnantd2bb0322010-08-22 01:04:3858
Howard Hinnantbc8d3f92010-05-11 19:42:1659if (ls *.pass.cpp &> /dev/null)
60then
61for FILE in $(ls *.pass.cpp); do
Howard Hinnant8452d212011-10-01 15:34:2762if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1663then
Howard Hinnant8452d212011-10-01 15:34:2764if ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1665then
Howard Hinnant8452d212011-10-01 15:34:2766rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1667let "pass+=1"
68else
David Chisnallf2b2cc62012-02-29 13:00:4469echo "`pwd`/$FILE failed at run time"
70echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
Howard Hinnantbc8d3f92010-05-11 19:42:1671let "fail+=1"
Howard Hinnant8452d212011-10-01 15:34:2772rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:1673fi
74else
David Chisnallf2b2cc62012-02-29 13:00:4475echo "`pwd`/$FILE failed to compile"
76echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
Howard Hinnantbc8d3f92010-05-11 19:42:1677let "fail+=1"
78fi
79done
80fi
81
82if [ $fail -gt 0 ]
83then
84echo "failed $fail tests in `pwd`"
85let "IMPLEMENTED_FAIL+=1"
86fi
87if [ $pass -gt 0 ]
88then
89echo "passed $pass tests in `pwd`"
90if [ $fail -eq 0 ]
91then
92let "IMPLEMENTED_PASS+=1"
93fi
94fi
95if [ $fail -eq 0 -a $pass -eq 0 ]
96then
97echo "not implemented: `pwd`"
98let "UNIMPLEMENTED+=1"
99fi
100
101let "FAIL+=$fail"
102let "PASS+=$pass"
103
104for FILE in *
105do
106if [ -d "$FILE" ];
107then
108cd $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:16109afunc
Howard Hinnantbc8d3f92010-05-11 19:42:16110cd ..
111fi
112done
113}
114
115afunc
116
117echo "****************************************************"
118echo "Results for `pwd`:"
119echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10120echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16121echo "----------------------------------------------------"
122echo "sections without tests : $UNIMPLEMENTED"
123echo "sections with failures : $IMPLEMENTED_FAIL"
124echo "sections without failures: $IMPLEMENTED_PASS"
125echo " + ----"
126echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
127echo "----------------------------------------------------"
128echo "number of tests failed : $FAIL"
129echo "number of tests passed : $PASS"
130echo " + ----"
131echo "total number of tests : $(($FAIL+$PASS))"
132echo "****************************************************"
133
134exit $FAIL