blob: a68bea77f643a0156c1a26a1d92063bd4206941e [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
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000011if [ -z $CC ]
12then
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +000013 CC=clang++
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000014fi
15
16if [ -z "$OPTIONS" ]
17then
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +000018 OPTIONS="-std=c++0x -stdlib=libc++"
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000019fi
20
21FAIL=0
22PASS=0
23UNIMPLEMENTED=0
24IMPLEMENTED_FAIL=0
25IMPLEMENTED_PASS=0
26
27function afunc
28{
29 fail=0
30 pass=0
31 if (ls *.fail.cpp &> /dev/null)
32 then
33 for FILE in $(ls *.fail.cpp); do
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +000034 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000035 then
36 rm ./a.out
37 echo "$FILE should not compile"
38 let "fail+=1"
39 else
40 let "pass+=1"
41 fi
42 done
43 fi
Howard Hinnantd2bb0322010-08-22 01:04:38 +000044
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000045 if (ls *.pass.cpp &> /dev/null)
46 then
47 for FILE in $(ls *.pass.cpp); do
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +000048 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000049 then
50 if ./a.out
51 then
52 rm ./a.out
53 let "pass+=1"
54 else
55 echo "$FILE failed at run time"
56 let "fail+=1"
57 rm ./a.out
58 fi
59 else
60 echo "$FILE failed to compile"
61 let "fail+=1"
62 fi
63 done
64 fi
65
66 if [ $fail -gt 0 ]
67 then
68 echo "failed $fail tests in `pwd`"
69 let "IMPLEMENTED_FAIL+=1"
70 fi
71 if [ $pass -gt 0 ]
72 then
73 echo "passed $pass tests in `pwd`"
74 if [ $fail -eq 0 ]
75 then
76 let "IMPLEMENTED_PASS+=1"
77 fi
78 fi
79 if [ $fail -eq 0 -a $pass -eq 0 ]
80 then
81 echo "not implemented: `pwd`"
82 let "UNIMPLEMENTED+=1"
83 fi
84
85 let "FAIL+=$fail"
86 let "PASS+=$pass"
87
88 for FILE in *
89 do
90 if [ -d "$FILE" ];
91 then
92 cd $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000093 afunc
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000094 cd ..
95 fi
96 done
97}
98
99afunc
100
101echo "****************************************************"
102echo "Results for `pwd`:"
103echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +0000104echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000105echo "----------------------------------------------------"
106echo "sections without tests : $UNIMPLEMENTED"
107echo "sections with failures : $IMPLEMENTED_FAIL"
108echo "sections without failures: $IMPLEMENTED_PASS"
109echo " + ----"
110echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
111echo "----------------------------------------------------"
112echo "number of tests failed : $FAIL"
113echo "number of tests passed : $PASS"
114echo " + ----"
115echo "total number of tests : $(($FAIL+$PASS))"
116echo "****************************************************"
117
118exit $FAIL