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