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