Year 2 compilers coureswork

test.sh 1.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. uname=`uname`
  3. if [ "$uname" = "Darwin" ]; then
  4. date="gdate"
  5. readlink="greadlink"
  6. wc="gwc"
  7. sed="gsed"
  8. else
  9. date="date"
  10. readlink="readlink"
  11. wc="wc"
  12. sed="sed"
  13. fi
  14. start=$($date +%s.%N)
  15. absdir=$($readlink -f $(dirname $0))
  16. pass="\033[32mPASSED\033[0m"
  17. fail="\033[31mFAILED\033[0m"
  18. tests=0
  19. passes=0
  20. num=`ls $absdir | grep .\*.c | $wc -L`
  21. num=$((num-2))
  22. fmt=`echo "%-$num""s"`
  23. for i in $(ls $absdir | grep .\*.c | sort); do
  24. answer=`$absdir/../mycc < $absdir/$i | tail -n 1`
  25. # exp_ans=`grep --color=none "##answer" $absdir/$i | $sed 's/[^0-9]\+\([0-9]\+\).\+/\1/g'`
  26. exp_ans=`grep --color=none "##answer" $absdir/$i | $sed 's/\/\* ##answer:\s\+\([^\*]\+\)\b\s*\*\//\1/g'`
  27. printf $fmt "${i%.*}"
  28. echo -n " ... "
  29. if [ "$answer" == "$exp_ans" ]; then
  30. echo -e "$pass"
  31. passes=$((passes+1))
  32. else
  33. echo -e "$fail expected $exp_ans got $answer"
  34. fi
  35. tests=$((tests+1))
  36. done
  37. end=$($date +%s.%N)
  38. runtime=$(python -c "print(${end} - ${start})")
  39. echo -e "\n$passes/$tests passed in $runtime""s"
  40. exit $((tests-passes))