summaryrefslogtreecommitdiff
path: root/scripts/run-test
blob: 017562ecbefa0ebb81ffd548e1fc32b1b17124af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh

TEST="$1"
NAME=$(basename "$TEST")

mkdir -p "reports/$NAME"

try_vg() {
	if which -s valgrind; then
		valgrind -q --leak-check=full --error-exitcode=1 "$1"
	else
		eval "$1"
	fi
}

I=0
while :; do
	# if no error happened, consider it a pass
	if try_vg "./${TEST}" > "reports/$NAME/run-$I" 2>&1
	then
		echo "$NAME: PASSED"
		exit 0
	fi

	if grep 'loss record' "reports/$NAME/run-$I" >/dev/null; then
		echo "$NAME: MEM FAILED"
		cat "reports/$NAME/run-$I"
		exit 1
	fi

	# an error occured, was it handled properly?
	if grep 'COVSRV: EXIT' "reports/$NAME/run-$I" >/dev/null; then
		I=$((I+1))
		continue
	fi

	echo "$NAME: FAILED"
	cat "reports/$NAME/run-$I"
	exit 1
done