1#!/bin/sh
2# //===--------------------------- 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
11if [ -z "$CC" ]
12then
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
36afunc()
37{
38	fail=0
39	pass=0
40	if (ls *.fail.cpp > /dev/null 2>&1)
41	then
42		for FILE in $(ls *.fail.cpp); do
43			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
44			then
45				rm ./$TEST_EXE
46				echo "$FILE should not compile"
47				fail=$(($fail + 1))
48			else
49				pass=$(($pass + 1))
50			fi
51		done
52	fi
53
54	if (ls *.cpp > /dev/null 2>&1)
55	then
56		for FILE in $(ls *.pass.cpp); do
57			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
58			then
59				if ./$TEST_EXE
60				then
61					rm ./$TEST_EXE
62					pass=$(($pass + 1))
63				else
64					echo "$FILE failed at run time"
65					fail=$(($fail + 1))
66					rm ./$TEST_EXE
67				fi
68			else
69				echo "$FILE failed to compile"
70				fail=$(($fail + 1))
71			fi
72		done
73	fi
74
75	if [ $fail -gt 0 ]
76	then
77		echo "failed $fail tests in `pwd`"
78		IMPLEMENTED_FAIL=$(($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			IMPLEMENTED_PASS=$(($IMPLEMENTED_PASS + 1))
86		fi
87	fi
88	if [ $fail -eq 0 -a $pass -eq 0 ]
89	then
90		echo "not implemented:  `pwd`"
91		UNIMPLEMENTED=$(($UNIMPLEMENTED + 1))
92	fi
93
94	FAIL=$(($FAIL + $fail))
95	PASS=$(($PASS + $pass))
96
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
128