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