OSDN Git Service

Test infrastructure: collate make "test_single" and "make tests" into common
authorRob Landley <rob@landley.net>
Tue, 18 Oct 2016 21:52:17 +0000 (16:52 -0500)
committerRob Landley <rob@landley.net>
Tue, 18 Oct 2016 21:52:17 +0000 (16:52 -0500)
function, and add $C variable with an absolute path to the command being tested
(you need to call things like printf by path to avoid shell builtins, might as
well be consistent).

scripts/test.sh

index 1337c52..01f9ea3 100755 (executable)
@@ -26,25 +26,35 @@ export LC_COLLATE=C
 . "$TOPDIR"/scripts/runtest.sh
 [ -f "$TOPDIR/generated/config.h" ] && export OPTIONFLAGS=:$(echo $(sed -nr 's/^#define CFG_(.*) 1/\1/p' "$TOPDIR/generated/config.h") | sed 's/ /:/g')
 
+do_test()
+{
+  CMDNAME="${1##*/}"
+  CMDNAME="${CMDNAME%.test}"
+  [ -z "$2" ] && C="$(readlink -f ../$CMDNAME)" || C="$(which $CMDNAME)"
+  if [ ! -z "$C" ]
+  then
+    . "$1"
+  else
+    echo "$CMDNAME disabled"
+  fi
+}
+
 if [ $# -ne 0 ]
 then
   for i in "$@"
   do
-    CMDNAME="${i##*/}"
-    CMDNAME="${CMDNAME%.test}"
-    . "$TOPDIR"/tests/$i.test
+    do_test "$TOPDIR"/tests/$i.test
   done
 else
   for i in "$TOPDIR"/tests/*.test
   do
-    CMDNAME="${i##*/}"
-    CMDNAME="${CMDNAME%.test}"
-    if [ -h ../$CMDNAME ] || [ ! -z "$TEST_HOST" ]
+    if [ -z "$TEST_HOST" ]
     then
-      cd .. && rm -rf testdir && mkdir testdir && cd testdir || exit 1
-      . $i
+      do_test "$i" 1
     else
-      echo "$CMDNAME disabled"
+      rm -rf testdir && mkdir testdir && cd testdir || exit 1
+      do_test "$i"
+      cd ..
     fi
   done
 fi