testleaks.sh 850 B

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/bash
  2. echo "Compiling test framework";
  3. fpc -glh dbtestframework.pas
  4. if [ $? != 0 ]; then
  5. echo "Compilation failed";
  6. exit
  7. fi
  8. echo "Generating test list"
  9. ./dbtestframework --list 2>/dev/null | sed /TestSuites/d | tr -d '[:blank:]' > test-list.txt
  10. exit
  11. for f in `cat test-list.txt`
  12. do
  13. echo -n "Doing test $f"
  14. ./dbtestframework --suite=$f > $f-mem.txt 2>&1
  15. grep '^0 unfreed memory blocks' $f-mem.txt >/dev/null 2>&1
  16. EC=$?
  17. if [ $EC = 1 ]; then
  18. echo "Error:"
  19. echo "Memory leak in $f"
  20. else
  21. if [ $EC = 0 ]; then
  22. echo "OK, removing log file."
  23. rm $f-mem.txt
  24. fi
  25. fi
  26. done
  27. NOTESTS=`cat test-list.txt | wc -l`
  28. grep -L '^0 unfreed memory blocks' *-mem.txt > leaklist.txt
  29. NOLEAKS=`cat leaklist.txt | wc -l`
  30. echo "Failures:"
  31. cat leaklist.txt
  32. echo "$NOTESTS tests performed, $NOLEAKS tests have memleak"
  33. # done