run-step.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash -e
  2. TIMEOUTCMD=`dirname "${BASH_SOURCE[0]}"`/babysitter
  3. if [[ "$OSTYPE" == "cygwin" ]] || ! ${TIMEOUTCMD} -h >/dev/null 2>&1; then
  4. TIMEOUTCMD=timeout # fall back to timeout if babysitter doesn't work (e.g. python not installed or wrong version)
  5. fi
  6. export MONO_BABYSITTER_LOG_FILE=babysitter_report.json_lines
  7. helptext ()
  8. {
  9. echo "run-step.sh {--label=LABEL} {--skip|--timeout=TIMEOUT [--fatal]} command to run with arguments"
  10. }
  11. for i in "$@"
  12. do
  13. case $i in
  14. --help)
  15. helptext
  16. exit 0
  17. ;;
  18. --label=*)
  19. LABEL="${i#*=}"
  20. shift # past argument=value
  21. ;;
  22. --timeout=*)
  23. TIMEOUT="${i#*=}"
  24. shift # past argument=value
  25. ;;
  26. --fatal)
  27. FATAL="true"
  28. shift # past argument
  29. ;;
  30. --skip)
  31. SKIP="true"
  32. shift # past argument
  33. ;;
  34. *)
  35. # unknown option, assume just part of cmdline
  36. ;;
  37. esac
  38. done
  39. if [ -n "${SKIP}" ] && [ -z "${LABEL}" ]
  40. then helptext
  41. exit 1
  42. fi
  43. if [ -n "${SKIP}" ]
  44. then echo -e "*** start: ${LABEL}\n*** end(0): ${LABEL}: \e[45mSkipped\e[0m"
  45. exit 0
  46. fi
  47. if [ -z "${LABEL}" ] || [ -z "${TIMEOUT}" ]
  48. then helptext
  49. exit 1
  50. fi
  51. STARTTIME=`date +%s`
  52. echo "*** start: ${LABEL}"
  53. if [ -n "${FATAL}" ]; then
  54. ${TIMEOUTCMD} --signal=ABRT --kill-after=60s ${TIMEOUT} "$@" && echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[42mPassed\e[0m" || (echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[41mFailed\e[0m" && exit 1)
  55. else
  56. ${TIMEOUTCMD} --signal=ABRT --kill-after=60s ${TIMEOUT} "$@" && echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[42mPassed\e[0m" || echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[43mUnstable\e[0m"
  57. fi