blob: eea3858a628a07c5bac1721e2f6880f51388142f [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001#!/bin/bash
2# //===--------------------------- testit ---------------------------------===//
3# //
Howard Hinnantf5256e12010-05-11 21:36:01 +00004# // The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00005# //
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:47 +000011if [ -z "$CC" ]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000012then
Dave Zarzyckib9344c22012-02-22 00:20:30 +000013 if which xcrun >/dev/null
14 then
15 CC="xcrun clang++"
16 else
17 CC=clang++
18 fi
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000019fi
20
21if [ -z "$OPTIONS" ]
22then
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +000023 OPTIONS="-std=c++0x -stdlib=libc++"
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000024fi
25
Howard Hinnant8452d212011-10-01 15:34:27 +000026case $TRIPLE in
27 *-*-mingw* | *-*-cygwin* | *-*-win*)
28 TEST_EXE=test.exe
29 ;;
30 *)
31 TEST_EXE=a.out
32 ;;
33esac
34
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000035FAIL=0
36PASS=0
37UNIMPLEMENTED=0
38IMPLEMENTED_FAIL=0
39IMPLEMENTED_PASS=0
40
41function afunc
42{
43 fail=0
44 pass=0
45 if (ls *.fail.cpp &> /dev/null)
46 then
47 for FILE in $(ls *.fail.cpp); do
Howard Hinnant8452d212011-10-01 15:34:27 +000048 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000049 then
Howard Hinnant8452d212011-10-01 15:34:27 +000050 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000051 echo "$FILE should not compile"
52 let "fail+=1"
53 else
54 let "pass+=1"
55 fi
56 done
57 fi
Howard Hinnantd2bb0322010-08-22 01:04:38 +000058
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000059 if (ls *.pass.cpp &> /dev/null)
60 then
61 for FILE in $(ls *.pass.cpp); do
Howard Hinnant8452d212011-10-01 15:34:27 +000062 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000063 then
Howard Hinnant8452d212011-10-01 15:34:27 +000064 if ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000065 then
Howard Hinnant8452d212011-10-01 15:34:27 +000066 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000067 let "pass+=1"
68 else
David Chisnallf2b2cc62012-02-29 13:00:44 +000069 echo "`pwd`/$FILE failed at run time"
70 echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000071 let "fail+=1"
Howard Hinnant8452d212011-10-01 15:34:27 +000072 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000073 fi
74 else
David Chisnallf2b2cc62012-02-29 13:00:44 +000075 echo "`pwd`/$FILE failed to compile"
76 echo "Compile line was:" $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000077 let "fail+=1"
78 fi
79 done
80 fi
81
82 if [ $fail -gt 0 ]
83 then
84 echo "failed $fail tests in `pwd`"
85 let "IMPLEMENTED_FAIL+=1"
86 fi
87 if [ $pass -gt 0 ]
88 then
89 echo "passed $pass tests in `pwd`"
90 if [ $fail -eq 0 ]
91 then
92 let "IMPLEMENTED_PASS+=1"
93 fi
94 fi
95 if [ $fail -eq 0 -a $pass -eq 0 ]
96 then
97 echo "not implemented: `pwd`"
98 let "UNIMPLEMENTED+=1"
99 fi
100
101 let "FAIL+=$fail"
102 let "PASS+=$pass"
103
104 for FILE in *
105 do
106 if [ -d "$FILE" ];
107 then
108 cd $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000109 afunc
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000110 cd ..
111 fi
112 done
113}
114
115afunc
116
117echo "****************************************************"
118echo "Results for `pwd`:"
119echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +0000120echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000121echo "----------------------------------------------------"
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