testit revision e45805f0d3f8dafef1297cc7dc49e610713f023b
18600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock#!/bin/sh
28600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //===--------------------------- testit ---------------------------------===//
38600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //
48600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //                     The LLVM Compiler Infrastructure
58600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //
68600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# // This file is distributed under the University of Illinois Open Source
78600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# // License. See LICENSE.TXT for details.
88600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //
98600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock# //===--------------------------------------------------------------------===//
108600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock
118600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockif [ -z "$CC" ]
128600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockthen
138600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	CC=clang++
148600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockfi
158600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock
168600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockif [ -z "$OPTIONS" ]
178600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockthen
188600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	OPTIONS="-std=c++0x -stdlib=libc++"
193e0770163686c1be83959d681976dafaf25272e1John Spurlockfi
20530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock
219c4a707912da2c954b2d3d1311b8a691ded8aa16Selim Cinekcase $TRIPLE in
22530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock  *-*-mingw* | *-*-cygwin* | *-*-win*)
238600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	TEST_EXE=test.exe
248600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock    ;;
25856edebad73560e9b1cce021a7de9a0470d07176John Spurlock  *)
26856edebad73560e9b1cce021a7de9a0470d07176John Spurlock    TEST_EXE=a.out
27b71e68f9aa44b220cabaace70493751538d94dc0John Spurlock    ;;
288600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockesac
29530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock
308600534df66c2ff5846ed230b50c56229322d48aJohn SpurlockFAIL=0
318600534df66c2ff5846ed230b50c56229322d48aJohn SpurlockPASS=0
328600534df66c2ff5846ed230b50c56229322d48aJohn SpurlockUNIMPLEMENTED=0
338600534df66c2ff5846ed230b50c56229322d48aJohn SpurlockIMPLEMENTED_FAIL=0
34ae641c9ccd3f81214cee54a5f13804f1765187adJohn SpurlockIMPLEMENTED_PASS=0
358600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock
36856edebad73560e9b1cce021a7de9a0470d07176John Spurlockafunc()
37c90e6fe863bb5ac84612bd777d3b352f69265950John Spurlock{
38530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock	fail=0
398600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	pass=0
40856edebad73560e9b1cce021a7de9a0470d07176John Spurlock	if (ls *.fail.cpp > /dev/null 2>&1)
418f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlock	then
428600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		for FILE in $(ls *.fail.cpp); do
438600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE > /dev/null 2>&1
443e0770163686c1be83959d681976dafaf25272e1John Spurlock			then
453e0770163686c1be83959d681976dafaf25272e1John Spurlock				rm ./$TEST_EXE
463e0770163686c1be83959d681976dafaf25272e1John Spurlock				echo "$FILE should not compile"
478600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock				fail=$(($fail + 1))
488600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock			else
498600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock				pass=$(($pass + 1))
508600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock			fi
518600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		done
528600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	fi
538600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock
548600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	if (ls *.cpp > /dev/null 2>&1)
558600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	then
568600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		for FILE in $(ls *.cpp); do
57530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock			if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
58530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock			then
598600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock				if ./$TEST_EXE
60856edebad73560e9b1cce021a7de9a0470d07176John Spurlock				then
618600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock					rm ./$TEST_EXE
628600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock					pass=$(($pass + 1))
63ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock				else
64ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock					echo "$FILE failed at run time"
65856edebad73560e9b1cce021a7de9a0470d07176John Spurlock					fail=$(($fail + 1))
6650806fc4ceff4bb093a18bdecb506163e68b9cbbJohn Spurlock					rm ./$TEST_EXE
6750806fc4ceff4bb093a18bdecb506163e68b9cbbJohn Spurlock				fi
6850806fc4ceff4bb093a18bdecb506163e68b9cbbJohn Spurlock			else
69ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock				echo "$FILE failed to compile"
7050806fc4ceff4bb093a18bdecb506163e68b9cbbJohn Spurlock				fail=$(($fail + 1))
714dd81467e33a694138da6916fc68ca79501a9429Jason Monk			fi
72856edebad73560e9b1cce021a7de9a0470d07176John Spurlock		done
73856edebad73560e9b1cce021a7de9a0470d07176John Spurlock	fi
74856edebad73560e9b1cce021a7de9a0470d07176John Spurlock
75ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock	if [ $fail -gt 0 ]
76530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock	then
77856edebad73560e9b1cce021a7de9a0470d07176John Spurlock		echo "failed $fail tests in `pwd`"
788600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		IMPLEMENTED_FAIL=$(($IMPLEMENTED_FAIL + 1))
798600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	fi
807f1df5e98578f8532a5e009009e7c1f82ed5885cJohn Spurlock	if [ $pass -gt 0 ]
818600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	then
828600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		echo "passed $pass tests in `pwd`"
838f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlock		if [ $fail -eq 0 ]
84661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock		then
858f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlock			IMPLEMENTED_PASS=$(($IMPLEMENTED_PASS + 1))
868f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlock		fi
873e0770163686c1be83959d681976dafaf25272e1John Spurlock	fi
883e0770163686c1be83959d681976dafaf25272e1John Spurlock	if [ $fail -eq 0 -a $pass -eq 0 ]
89530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock	then
90530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock		echo "not implemented:  `pwd`"
91530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock		UNIMPLEMENTED=$(($UNIMPLEMENTED + 1))
92530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlock	fi
930b688503754737a20165f0cff1833e714a5c4164John Spurlock
94856edebad73560e9b1cce021a7de9a0470d07176John Spurlock	FAIL=$(($FAIL + $fail))
95eb2727bb2f0f32016ca7c4bdd2c0a79eec8cb80aJohn Spurlock	PASS=$(($PASS + $pass))
96ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock
97ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock	for FILE in *
98ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock	do
99ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock		if [ -d "$FILE" ];
100ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock		then
1017f8f22a53005f776c8ee4d299e748e74b077ffd9John Spurlock			cd $FILE
102ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock			afunc
103ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlock			cd ..
1048600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock		fi
1058600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock	done
1068600534df66c2ff5846ed230b50c56229322d48aJohn Spurlock}
1074db0d98b42a723f2e16c6595e85e866fd26c6d98John Spurlock
1084db0d98b42a723f2e16c6595e85e866fd26c6d98John Spurlockafunc
109856edebad73560e9b1cce021a7de9a0470d07176John Spurlock
110ae641c9ccd3f81214cee54a5f13804f1765187adJohn Spurlockecho "****************************************************"
111530052a2fe3b6a6a4246ce28ab0ced647fe7f470John Spurlockecho "Results for `pwd`:"
112fbb3d6ff392e9cd13fea49f85f12efd0a304d448John Spurlockecho "using `$CC --version`"
1138f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlockecho "with $OPTIONS $HEADER_INCLUDE $SOURCE_LIB"
1143e0770163686c1be83959d681976dafaf25272e1John Spurlockecho "----------------------------------------------------"
1154db0d98b42a723f2e16c6595e85e866fd26c6d98John Spurlockecho "sections without tests   : $UNIMPLEMENTED"
1164db0d98b42a723f2e16c6595e85e866fd26c6d98John Spurlockecho "sections with failures   : $IMPLEMENTED_FAIL"
1174db0d98b42a723f2e16c6595e85e866fd26c6d98John Spurlockecho "sections without failures: $IMPLEMENTED_PASS"
1188600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockecho "                       +   ----"
1198600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockecho "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
1208600534df66c2ff5846ed230b50c56229322d48aJohn Spurlockecho "----------------------------------------------------"
1217f1df5e98578f8532a5e009009e7c1f82ed5885cJohn Spurlockecho "number of tests failed   : $FAIL"
1228f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlockecho "number of tests passed   : $PASS"
123f7d22132c2c9b83134b05aaed63a89f61c639fd9John Spurlockecho "                       +   ----"
124661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlockecho "total number of tests    : $(($FAIL+$PASS))"
125b71e68f9aa44b220cabaace70493751538d94dc0John Spurlockecho "****************************************************"
1268f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlock
1278f8ecd620c796834a1048ec98f0e8072f5ad926cJohn Spurlockexit $FAIL
1283e0770163686c1be83959d681976dafaf25272e1John Spurlock