blob: 774f96fe1d76ed1254f114ccd6bbdb469c4b3967 [file] [log] [blame]
Howard Hinnantc51e1022010-05-11 19:42:16 +00001#!/bin/bash
2# //===--------------------------- testit ---------------------------------===//
3# //
Howard Hinnantc566dc32010-05-11 21:36:01 +00004# // The LLVM Compiler Infrastructure
Howard Hinnantc51e1022010-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
Howard Hinnantc51e1022010-05-11 19:42:16 +000011if [ -z $CC ]
12then
Dave Zarzyckide1dd4a2012-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 Hinnantc51e1022010-05-11 19:42:16 +000019fi
20
21if [ -z "$OPTIONS" ]
22then
Howard Hinnantdfcdc892011-02-14 18:06:10 +000023 OPTIONS="-std=c++0x -stdlib=libc++"
Howard Hinnantc51e1022010-05-11 19:42:16 +000024fi
25
Howard Hinnantb49b05e2011-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 Hinnantc51e1022010-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 Hinnantb49b05e2011-10-01 15:34:27 +000048 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null
Howard Hinnantc51e1022010-05-11 19:42:16 +000049 then
Howard Hinnantb49b05e2011-10-01 15:34:27 +000050 rm ./$TEST_EXE
Howard Hinnantc51e1022010-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 Hinnant3e1b0422010-08-22 01:04:38 +000058
Howard Hinnantc51e1022010-05-11 19:42:16 +000059 if (ls *.pass.cpp &> /dev/null)
60 then
61 for FILE in $(ls *.pass.cpp); do
Howard Hinnantb49b05e2011-10-01 15:34:27 +000062 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
Howard Hinnantc51e1022010-05-11 19:42:16 +000063 then
Howard Hinnantb49b05e2011-10-01 15:34:27 +000064 if ./$TEST_EXE
Howard Hinnantc51e1022010-05-11 19:42:16 +000065 then
Howard Hinnantb49b05e2011-10-01 15:34:27 +000066 rm ./$TEST_EXE
Howard Hinnantc51e1022010-05-11 19:42:16 +000067 let "pass+=1"
68 else
69 echo "$FILE failed at run time"
70 let "fail+=1"
Howard Hinnantb49b05e2011-10-01 15:34:27 +000071 rm ./$TEST_EXE
Howard Hinnantc51e1022010-05-11 19:42:16 +000072 fi
73 else
74 echo "$FILE failed to compile"
75 let "fail+=1"
76 fi
77 done
78 fi
79
80 if [ $fail -gt 0 ]
81 then
82 echo "failed $fail tests in `pwd`"
83 let "IMPLEMENTED_FAIL+=1"
84 fi
85 if [ $pass -gt 0 ]
86 then
87 echo "passed $pass tests in `pwd`"
88 if [ $fail -eq 0 ]
89 then
90 let "IMPLEMENTED_PASS+=1"
91 fi
92 fi
93 if [ $fail -eq 0 -a $pass -eq 0 ]
94 then
95 echo "not implemented: `pwd`"
96 let "UNIMPLEMENTED+=1"
97 fi
98
99 let "FAIL+=$fail"
100 let "PASS+=$pass"
101
102 for FILE in *
103 do
104 if [ -d "$FILE" ];
105 then
106 cd $FILE
Howard Hinnantc51e1022010-05-11 19:42:16 +0000107 afunc
Howard Hinnantc51e1022010-05-11 19:42:16 +0000108 cd ..
109 fi
110 done
111}
112
113afunc
114
115echo "****************************************************"
116echo "Results for `pwd`:"
117echo "using `$CC --version`"
Howard Hinnantdfcdc892011-02-14 18:06:10 +0000118echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantc51e1022010-05-11 19:42:16 +0000119echo "----------------------------------------------------"
120echo "sections without tests : $UNIMPLEMENTED"
121echo "sections with failures : $IMPLEMENTED_FAIL"
122echo "sections without failures: $IMPLEMENTED_PASS"
123echo " + ----"
124echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
125echo "----------------------------------------------------"
126echo "number of tests failed : $FAIL"
127echo "number of tests passed : $PASS"
128echo " + ----"
129echo "total number of tests : $(($FAIL+$PASS))"
130echo "****************************************************"
131
132exit $FAIL