test.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/bash
  2. source scripts/runtest.sh
  3. source scripts/portability.sh
  4. TOPDIR="$PWD"
  5. export FILES="$PWD"/tests/files
  6. trap 'kill $(jobs -p) 2>/dev/null; exit 1' INT
  7. rm -rf generated/testdir
  8. mkdir -p generated/testdir/testdir
  9. if [ -z "$TEST_HOST" ]
  10. then
  11. if [ $# -ne 0 ]
  12. then
  13. PREFIX=generated/testdir/ scripts/single.sh "$@" || exit 1
  14. else
  15. make install_flat PREFIX=generated/testdir || exit 1
  16. fi
  17. fi
  18. cd generated/testdir
  19. PATH="$PWD:$PATH"
  20. TESTDIR="$PWD"
  21. export LC_COLLATE=C
  22. [ -f "$TOPDIR/generated/config.h" ] &&
  23. export OPTIONFLAGS=:$(echo $($SED -nr 's/^#define CFG_(.*) 1/\1/p' "$TOPDIR/generated/config.h") | $SED 's/ /:/g')
  24. do_test()
  25. {
  26. cd "$TESTDIR" && rm -rf testdir continue && mkdir testdir && cd testdir ||
  27. exit 1
  28. CMDNAME="${1##*/}"
  29. CMDNAME="${CMDNAME%.test}"
  30. if [ -z "$TEST_HOST" ]
  31. then
  32. C="$TESTDIR/$CMDNAME"
  33. [ ! -e "$C" ] && echo "$CMDNAME disabled" && return
  34. C="$(dirname $(realpath "$C"))/$CMDNAME"
  35. else
  36. C="$(which $CMDNAME 2>/dev/null)"
  37. [ -z "$C" ] && printf '%s\n' "$SHOWSKIP: no $CMDNAME" && return
  38. fi
  39. (. "$1"; cd "$TESTDIR"; touch continue)
  40. cd "$TESTDIR"
  41. [ -e continue ] || exit 1
  42. }
  43. if [ $# -ne 0 ]
  44. then
  45. for i in "$@"
  46. do
  47. do_test "$TOPDIR"/tests/$i.test
  48. done
  49. else
  50. for i in "$TOPDIR"/tests/*.test
  51. do
  52. [ -z "$TEST_ALL" ] && [ ! -x "$i" ] && continue
  53. do_test "$i"
  54. done
  55. fi
  56. [ $FAILCOUNT -eq 0 ]