run_tests.sh 1.4 KB

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