xref: /OK3568_Linux_fs/kernel/tools/lib/lockdep/run_tests.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#! /bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun
4*4882a593Smuzhiyunif ! make >/dev/null; then
5*4882a593Smuzhiyun    echo "Building liblockdep failed."
6*4882a593Smuzhiyun    echo "FAILED!"
7*4882a593Smuzhiyun    exit 1
8*4882a593Smuzhiyunfi
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunfind tests -name '*.c' | sort | while read -r i; do
11*4882a593Smuzhiyun	testname=$(basename "$i" .c)
12*4882a593Smuzhiyun	echo -ne "$testname... "
13*4882a593Smuzhiyun	if gcc -o "tests/$testname" -pthread "$i" liblockdep.a -Iinclude -D__USE_LIBLOCKDEP &&
14*4882a593Smuzhiyun		timeout 1 "tests/$testname" 2>&1 | /bin/bash "tests/${testname}.sh"; then
15*4882a593Smuzhiyun		echo "PASSED!"
16*4882a593Smuzhiyun	else
17*4882a593Smuzhiyun		echo "FAILED!"
18*4882a593Smuzhiyun	fi
19*4882a593Smuzhiyun	rm -f "tests/$testname"
20*4882a593Smuzhiyundone
21*4882a593Smuzhiyun
22*4882a593Smuzhiyunfind tests -name '*.c' | sort | while read -r i; do
23*4882a593Smuzhiyun	testname=$(basename "$i" .c)
24*4882a593Smuzhiyun	echo -ne "(PRELOAD) $testname... "
25*4882a593Smuzhiyun	if gcc -o "tests/$testname" -pthread -Iinclude "$i" &&
26*4882a593Smuzhiyun		timeout 1 ./lockdep "tests/$testname" 2>&1 |
27*4882a593Smuzhiyun		/bin/bash "tests/${testname}.sh"; then
28*4882a593Smuzhiyun		echo "PASSED!"
29*4882a593Smuzhiyun	else
30*4882a593Smuzhiyun		echo "FAILED!"
31*4882a593Smuzhiyun	fi
32*4882a593Smuzhiyun	rm -f "tests/$testname"
33*4882a593Smuzhiyundone
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunfind tests -name '*.c' | sort | while read -r i; do
36*4882a593Smuzhiyun	testname=$(basename "$i" .c)
37*4882a593Smuzhiyun	echo -ne "(PRELOAD + Valgrind) $testname... "
38*4882a593Smuzhiyun	if gcc -o "tests/$testname" -pthread -Iinclude "$i" &&
39*4882a593Smuzhiyun		{ timeout 10 valgrind --read-var-info=yes ./lockdep "./tests/$testname" >& "tests/${testname}.vg.out"; true; } &&
40*4882a593Smuzhiyun		/bin/bash "tests/${testname}.sh" < "tests/${testname}.vg.out" &&
41*4882a593Smuzhiyun		! grep -Eq '(^==[0-9]*== (Invalid |Uninitialised ))|Mismatched free|Source and destination overlap| UME ' "tests/${testname}.vg.out"; then
42*4882a593Smuzhiyun		echo "PASSED!"
43*4882a593Smuzhiyun	else
44*4882a593Smuzhiyun		echo "FAILED!"
45*4882a593Smuzhiyun	fi
46*4882a593Smuzhiyun	rm -f "tests/$testname"
47*4882a593Smuzhiyundone
48