1#!/bin/sh
2#===------------------------------ testit ----------------------------------===#
3#
4# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5# See https://llvm.org/LICENSE.txt for license information.
6# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7#
8#===------------------------------------------------------------------------===#
9
10if [ -z "$CC" ]
11then
12	CC=clang++
13fi
14
15if [ -z "$OPTIONS" ]
16then
17	OPTIONS="-std=c++0x -stdlib=libc++"
18fi
19
20case $TRIPLE in
21  *-*-mingw* | *-*-cygwin* | *-*-win*)
22	TEST_EXE=test.exe
23    ;;
24  *)
25    TEST_EXE=a.out
26    ;;
27esac
28
29FAIL=0
30PASS=0
31UNIMPLEMENTED=0
32IMPLEMENTED_FAIL=0
33IMPLEMENTED_PASS=0
34
35afunc()
36{
37	fail=0
38	pass=0
39	if (ls *.fail.cpp > /dev/null 2>&1)
40	then
41		for FILE in $(ls *.fail.cpp); do
42			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
43			then
44				rm ./$TEST_EXE
45				echo "$FILE should not compile"
46				fail=$(($fail + 1))
47			else
48				pass=$(($pass + 1))
49			fi
50		done
51	fi
52
53	if (ls *.cpp > /dev/null 2>&1)
54	then
55		for FILE in $(ls *.pass.cpp); do
56			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
57			then
58				if ./$TEST_EXE
59				then
60					rm ./$TEST_EXE
61					pass=$(($pass + 1))
62				else
63					echo "$FILE failed at run time"
64					fail=$(($fail + 1))
65					rm ./$TEST_EXE
66				fi
67			else
68				echo "$FILE failed to compile"
69				fail=$(($fail + 1))
70			fi
71		done
72	fi
73
74	if [ $fail -gt 0 ]
75	then
76		echo "failed $fail tests in `pwd`"
77		IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL + 1))
78	fi
79	if [ $pass -gt 0 ]
80	then
81		echo "passed $pass tests in `pwd`"
82		if [ $fail -eq 0 ]
83		then
84			IMPLEMENTED_PASS=$(($IMPLEMENTED_PASS + 1))
85		fi
86	fi
87	if [ $fail -eq 0 -a $pass -eq 0 ]
88	then
89		echo "not implemented:  `pwd`"
90		UNIMPLEMENTED=$(($UNIMPLEMENTED + 1))
91	fi
92
93	FAIL=$(($FAIL + $fail))
94	PASS=$(($PASS + $pass))
95
96	for FILE in *
97	do
98		if [ -d "$FILE" ];
99		then
100			cd $FILE
101			afunc
102			cd ..
103		fi
104	done
105}
106
107afunc
108
109echo "****************************************************"
110echo "Results for `pwd`:"
111echo "using `$CC --version`"
112echo "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
113echo "----------------------------------------------------"
114echo "sections without tests   : $UNIMPLEMENTED"
115echo "sections with failures   : $IMPLEMENTED_FAIL"
116echo "sections without failures: $IMPLEMENTED_PASS"
117echo "                       +   ----"
118echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
119echo "----------------------------------------------------"
120echo "number of tests failed   : $FAIL"
121echo "number of tests passed   : $PASS"
122echo "                       +   ----"
123echo "total number of tests    : $(($FAIL+$PASS))"
124echo "****************************************************"
125
126exit $FAIL
127