blob: ac52f05c1628fd4238634f1cac2d9dc34aa18a64 [file] [log] [blame]
Dan Alberte45805f2014-07-02 16:11:13 -07001#!/bin/sh
Howard Hinnant9fb57092012-01-31 20:10:33 +00002# //===--------------------------- testit ---------------------------------===//
3# //
4# // The LLVM Compiler Infrastructure
5# //
6# // This file is distributed under the University of Illinois Open Source
7# // License. See LICENSE.TXT for details.
8# //
9# //===--------------------------------------------------------------------===//
10
Dan Alberte45805f2014-07-02 16:11:13 -070011if [ -z "$CC" ]
Howard Hinnant9fb57092012-01-31 20:10:33 +000012then
13 CC=clang++
14fi
15
16if [ -z "$OPTIONS" ]
17then
18 OPTIONS="-std=c++0x -stdlib=libc++"
19fi
20
21case $TRIPLE in
22 *-*-mingw* | *-*-cygwin* | *-*-win*)
23 TEST_EXE=test.exe
24 ;;
25 *)
26 TEST_EXE=a.out
27 ;;
28esac
29
30FAIL=0
31PASS=0
32UNIMPLEMENTED=0
33IMPLEMENTED_FAIL=0
34IMPLEMENTED_PASS=0
35
Dan Alberte45805f2014-07-02 16:11:13 -070036afunc()
Howard Hinnant9fb57092012-01-31 20:10:33 +000037{
38 fail=0
39 pass=0
Dan Alberte45805f2014-07-02 16:11:13 -070040 if (ls *.fail.cpp > /dev/null 2>&1)
Howard Hinnant9fb57092012-01-31 20:10:33 +000041 then
42 for FILE in $(ls *.fail.cpp); do
Dan Alberte45805f2014-07-02 16:11:13 -070043 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
Howard Hinnant9fb57092012-01-31 20:10:33 +000044 then
45 rm ./$TEST_EXE
46 echo "$FILE should not compile"
Dan Alberte45805f2014-07-02 16:11:13 -070047 fail=$(($fail + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000048 else
Dan Alberte45805f2014-07-02 16:11:13 -070049 pass=$(($pass + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000050 fi
51 done
52 fi
53
Dan Alberte45805f2014-07-02 16:11:13 -070054 if (ls *.cpp > /dev/null 2>&1)
Howard Hinnant9fb57092012-01-31 20:10:33 +000055 then
Dan Albert0a1ce9c2015-03-04 17:08:25 -080056 for FILE in $(ls *.pass.cpp); do
Howard Hinnant9fb57092012-01-31 20:10:33 +000057 if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
58 then
59 if ./$TEST_EXE
60 then
61 rm ./$TEST_EXE
Dan Alberte45805f2014-07-02 16:11:13 -070062 pass=$(($pass + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000063 else
64 echo "$FILE failed at run time"
Dan Alberte45805f2014-07-02 16:11:13 -070065 fail=$(($fail + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000066 rm ./$TEST_EXE
67 fi
68 else
69 echo "$FILE failed to compile"
Dan Alberte45805f2014-07-02 16:11:13 -070070 fail=$(($fail + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000071 fi
72 done
73 fi
74
75 if [ $fail -gt 0 ]
76 then
77 echo "failed $fail tests in `pwd`"
Dan Alberte45805f2014-07-02 16:11:13 -070078 IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000079 fi
80 if [ $pass -gt 0 ]
81 then
82 echo "passed $pass tests in `pwd`"
83 if [ $fail -eq 0 ]
84 then
Dan Alberte45805f2014-07-02 16:11:13 -070085 IMPLEMENTED_PASS=$(($IMPLEMENTED_PASS + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000086 fi
87 fi
88 if [ $fail -eq 0 -a $pass -eq 0 ]
89 then
90 echo "not implemented: `pwd`"
Dan Alberte45805f2014-07-02 16:11:13 -070091 UNIMPLEMENTED=$(($UNIMPLEMENTED + 1))
Howard Hinnant9fb57092012-01-31 20:10:33 +000092 fi
93
Dan Alberte45805f2014-07-02 16:11:13 -070094 FAIL=$(($FAIL + $fail))
95 PASS=$(($PASS + $pass))
Howard Hinnant9fb57092012-01-31 20:10:33 +000096
97 for FILE in *
98 do
99 if [ -d "$FILE" ];
100 then
101 cd $FILE
102 afunc
103 cd ..
104 fi
105 done
106}
107
108afunc
109
110echo "****************************************************"
111echo "Results for `pwd`:"
112echo "using `$CC --version`"
113echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
114echo "----------------------------------------------------"
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