blob: d30e78c6ac7f39ec7cec23b6503e31bb9e43ff12 [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
Howard Hinnant8452d212011-10-01 15:34:27 +000021case $TRIPLE in
22 *-*-mingw* | *-*-cygwin* | *-*-win*)
23 TEST_EXE=test.exe
24 ;;
25 *)
26 TEST_EXE=a.out
27 ;;
28esac
29
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000030FAIL=0
31PASS=0
32UNIMPLEMENTED=0
33IMPLEMENTED_FAIL=0
34IMPLEMENTED_PASS=0
35
36function afunc
37{
38 fail=0
39 pass=0
40 if (ls *.fail.cpp &> /dev/null)
41 then
42 for FILE in $(ls *.fail.cpp); do
Howard Hinnant8452d212011-10-01 15:34:27 +000043 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000044 then
Howard Hinnant8452d212011-10-01 15:34:27 +000045 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000046 echo "$FILE should not compile"
47 let "fail+=1"
48 else
49 let "pass+=1"
50 fi
51 done
52 fi
Howard Hinnantd2bb0322010-08-22 01:04:38 +000053
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000054 if (ls *.pass.cpp &> /dev/null)
55 then
56 for FILE in $(ls *.pass.cpp); do
Howard Hinnant8452d212011-10-01 15:34:27 +000057 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000058 then
Howard Hinnant8452d212011-10-01 15:34:27 +000059 if ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000060 then
Howard Hinnant8452d212011-10-01 15:34:27 +000061 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000062 let "pass+=1"
63 else
64 echo "$FILE failed at run time"
65 let "fail+=1"
Howard Hinnant8452d212011-10-01 15:34:27 +000066 rm ./$TEST_EXE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000067 fi
68 else
69 echo "$FILE failed to compile"
70 let "fail+=1"
71 fi
72 done
73 fi
74
75 if [ $fail -gt 0 ]
76 then
77 echo "failed $fail tests in `pwd`"
78 let "IMPLEMENTED_FAIL+=1"
79 fi
80 if [ $pass -gt 0 ]
81 then
82 echo "passed $pass tests in `pwd`"
83 if [ $fail -eq 0 ]
84 then
85 let "IMPLEMENTED_PASS+=1"
86 fi
87 fi
88 if [ $fail -eq 0 -a $pass -eq 0 ]
89 then
90 echo "not implemented: `pwd`"
91 let "UNIMPLEMENTED+=1"
92 fi
93
94 let "FAIL+=$fail"
95 let "PASS+=$pass"
96
97 for FILE in *
98 do
99 if [ -d "$FILE" ];
100 then
101 cd $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000102 afunc
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000103 cd ..
104 fi
105 done
106}
107
108afunc
109
110echo "****************************************************"
111echo "Results for `pwd`:"
112echo "using `$CC --version`"
Howard Hinnantc4cbb5b2011-02-14 18:06:10 +0000113echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000114echo "----------------------------------------------------"
115echo "sections without tests : $UNIMPLEMENTED"
116echo "sections with failures : $IMPLEMENTED_FAIL"
117echo "sections without failures: $IMPLEMENTED_PASS"
118echo " + ----"
119echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
120echo "----------------------------------------------------"
121echo "number of tests failed : $FAIL"
122echo "number of tests passed : $PASS"
123echo " + ----"
124echo "total number of tests : $(($FAIL+$PASS))"
125echo "****************************************************"
126
127exit $FAIL