shell dot on steroids https://pagure.io/shellfu

runtests 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/bin/bash
  2. #shellcheck disable=SC1090
  3. # tfkit - Shellfu's movable test framework
  4. # See LICENSE file for copyright and license details.
  5. TF_VERSION="0.0.18"
  6. die() {
  7. echo "$@" && exit 9
  8. }
  9. usage() {
  10. echo "usage: $(basename "$0") [-c|-C] [-t tests_re] [-s subtest_re] [-p binpath] [-v] [-d]" >&2
  11. exit 2
  12. }
  13. version() {
  14. echo "TFKit (A trivial test kit) $TF_VERSION"
  15. exit 0
  16. }
  17. #
  18. # Relic directory path
  19. #
  20. TF_RELICS="${TF_RELICS:-relics}"
  21. #
  22. # Relic collection mode
  23. #
  24. # 'always' to always collect, 'never` to never collect and 'auto'
  25. # to collect only on failed tests.
  26. #
  27. TF_COLLECT="${TF_COLLECT:-auto}"
  28. #
  29. # Enable color?
  30. #
  31. TF_COLOR=${TF_COLOR:-true}
  32. #
  33. # Turn on debug mode?
  34. #
  35. TF_DEBUG="${TF_DEBUG:-false}"
  36. #
  37. # Location of own directory
  38. #
  39. TF_DIR=${TF_DIR:-$(dirname "$0")}
  40. #
  41. # Regex (BRE) to filter subtests based on name
  42. #
  43. TF_FILTER_SUBTEST=${TF_FILTER_SUBTEST:-}
  44. #
  45. # Regex (BRE) to filter tests based on name
  46. #
  47. TF_FILTER_TEST=${TF_FILTER_TEST:-}
  48. #
  49. # Location of test suite
  50. #
  51. TF_SUITE="${TF_SUITE:-tests}"
  52. #
  53. # Turn on verbosity?
  54. #
  55. TF_VERBOSE=${TF_VERBOSE:-true}
  56. . "$TF_DIR/include/harness.sh" \
  57. || die "cannot import harness; is TF_DIR set properly?: $TF_DIR"
  58. main() {
  59. while true; do case "$1" in
  60. -c|--collect) TF_COLLECT=always; shift ;;
  61. -C|--no-collect) TF_COLLECT=never; shift ;;
  62. -d|--debug) TF_DEBUG=true; shift ;;
  63. -p|--prefix) PATH="$(readlink -f "$2")/bin:$PATH"
  64. export PATH; shift 2 || usage ;;
  65. -s|--filter-subtest) TF_FILTER_SUBTEST="$2"; shift 2 || usage ;;
  66. -t|--filter-test) TF_FILTER_TEST="$2"; shift 2 || usage ;;
  67. -v|--verbose) TF_VERBOSE=true; shift ;;
  68. --version-semver) echo "$TF_VERSION"; exit 0 ;;
  69. --version) version ;;
  70. "") break ;;
  71. *) usage ;;
  72. esac done
  73. export LC_ALL=C
  74. time tf_run_tests
  75. }
  76. main "$@"