blob: b0ebcbf1b5f497bb87d3c4156f72499046f2635a [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
11BACKUP="../"
12
13currentpath=`pwd`
14origpath=$currentpath
15currentdir=`basename $currentpath`
16while [ $currentdir != "test" ]; do
17 if [ $currentdir == "/" ]
18 then
19 echo "current directory must be in or under \"test\"."
20 exit 1
21 fi
22 cd ..
23 currentpath=`pwd`
24 currentdir=`basename $currentpath`
25 BACKUP="../"$BACKUP
26done
27cd $origpath
28
29if [ -z $CC ]
30then
31 CC=g++
32fi
33
34auto_header=0
35
36if [ -z $HEADER_INCLUDE ]
37then
38 HEADER_INCLUDE=$BACKUP"include"
39 let "auto_header+=1"
40fi
41
42auto_lib=0
43
44SOURCE_LIB=/usr/lib/libc++.dylib
45#SOURCE_LIB=/Users/hinnant/Development/libcpp/lib/libc++.a
46
47if [ -z $SOURCE_LIB ]
48then
49 SOURCE_LIB=$BACKUP"lib/libc++.dylib"
50 let "auto_lib+=1"
51fi
52
53if [ -z "$OPTIONS" ]
54then
55 OPTIONS="-nostdinc++ -nodefaultlibs /usr/lib/libSystem.B.dylib -arch `arch`"
56fi
57
58FAIL=0
59PASS=0
60UNIMPLEMENTED=0
61IMPLEMENTED_FAIL=0
62IMPLEMENTED_PASS=0
63
64function afunc
65{
66 fail=0
67 pass=0
68 if (ls *.fail.cpp &> /dev/null)
69 then
70 for FILE in $(ls *.fail.cpp); do
71 if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null
72 then
73 rm ./a.out
74 echo "$FILE should not compile"
75 let "fail+=1"
76 else
77 let "pass+=1"
78 fi
79 done
80 fi
81
82 if (ls *.pass.cpp &> /dev/null)
83 then
84 for FILE in $(ls *.pass.cpp); do
85 if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE
86 then
87 if ./a.out
88 then
89 rm ./a.out
90 let "pass+=1"
91 else
92 echo "$FILE failed at run time"
93 let "fail+=1"
94 rm ./a.out
95 fi
96 else
97 echo "$FILE failed to compile"
98 let "fail+=1"
99 fi
100 done
101 fi
102
103 if [ $fail -gt 0 ]
104 then
105 echo "failed $fail tests in `pwd`"
106 let "IMPLEMENTED_FAIL+=1"
107 fi
108 if [ $pass -gt 0 ]
109 then
110 echo "passed $pass tests in `pwd`"
111 if [ $fail -eq 0 ]
112 then
113 let "IMPLEMENTED_PASS+=1"
114 fi
115 fi
116 if [ $fail -eq 0 -a $pass -eq 0 ]
117 then
118 echo "not implemented: `pwd`"
119 let "UNIMPLEMENTED+=1"
120 fi
121
122 let "FAIL+=$fail"
123 let "PASS+=$pass"
124
125 for FILE in *
126 do
127 if [ -d "$FILE" ];
128 then
129 cd $FILE
130 if [ $auto_header -eq 1 ]
131 then
132 SAVE_HEADER_INCLUDE=$HEADER_INCLUDE
133 HEADER_INCLUDE="../"$HEADER_INCLUDE
134 fi
135 if [ $auto_lib -eq 1 ]
136 then
137 SAVE_SOURCE_LIB=$SOURCE_LIB
138 SOURCE_LIB="../"$SOURCE_LIB
139 fi
140
141 afunc
142
143 if [ $auto_header -eq 1 ]
144 then
145 HEADER_INCLUDE=${HEADER_INCLUDE:3}
146 fi
147 if [ $auto_lib -eq 1 ]
148 then
149 SOURCE_LIB=${SOURCE_LIB:3}
150 fi
151 cd ..
152 fi
153 done
154}
155
156afunc
157
158echo "****************************************************"
159echo "Results for `pwd`:"
160echo "using `$CC --version`"
161echo "with $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB"
162echo "----------------------------------------------------"
163echo "sections without tests : $UNIMPLEMENTED"
164echo "sections with failures : $IMPLEMENTED_FAIL"
165echo "sections without failures: $IMPLEMENTED_PASS"
166echo " + ----"
167echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
168echo "----------------------------------------------------"
169echo "number of tests failed : $FAIL"
170echo "number of tests passed : $PASS"
171echo " + ----"
172echo "total number of tests : $(($FAIL+$PASS))"
173echo "****************************************************"
174
175exit $FAIL