Year 2 compilers coureswork

test.sh 927B

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