15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#!/bin/sh
25a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# //===--------------------------- testit ---------------------------------===//
35a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# //
45a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# //                     The LLVM Compiler Infrastructure
52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# //
65a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# // This file is distributed under the University of Illinois Open Source
75a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# // License. See LICENSE.TXT for details.
85a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# //
95a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov# //===--------------------------------------------------------------------===//
102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
115a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovif [ -z "$CC" ]
125a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovthen
135a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov	CC=clang++
145a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovfi
155a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov
165a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovif [ -z "$OPTIONS" ]
175a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovthen
185a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov	OPTIONS="-std=c++0x -stdlib=libc++"
195a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovfi
205a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov
215a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukovcase $TRIPLE in
225a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov  *-*-mingw* | *-*-cygwin* | *-*-win*)
235a1f23310cc4a1debae8741653defe620518e612Dmitry Vyukov	TEST_EXE=test.exe
24c842dabb53cc2101cc5449f24921a972d812d7c6Alexey Samsonov    ;;
25c842dabb53cc2101cc5449f24921a972d812d7c6Alexey Samsonov  *)
265d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines    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 *.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