]> Zhao Yanbai Git Server - minix.git/commitdiff
test run: feature for nicer jenkins interaction 12/512/2
authorBen Gras <ben@minix3.org>
Thu, 18 Apr 2013 13:41:01 +0000 (13:41 +0000)
committerBen Gras <ben@minix3.org>
Thu, 18 Apr 2013 14:28:03 +0000 (14:28 +0000)
. add -l option to list available tests
. add -t option to specify tests to run
. also improve the root check a bit by
  not relying on an environment var
. do not print the human-friendly banner & summary
  if a test list is given to make the test
  results easy to parse

Change-Id: Id0f87d485240b1924d667af788338ae31c3dc94c

test/run

index bac93215685aba316369a0b0b05874f6e1e21c4b..122e517863c7178720527b0fba738abafb226d03 100755 (executable)
--- a/test/run
+++ b/test/run
@@ -1,5 +1,11 @@
 #!/bin/sh
 
+# Are we running as root?
+unset ROOT
+if [ "`id -u`" = 0 ]
+then   ROOT=yes
+fi
+
 # Initialization
 PATH=:/bin:/usr/bin
 export PATH
@@ -15,7 +21,7 @@ badones=                      # list of tests that failed
 setuids="test11 test33 test43 test44 test46 test56 test60 test61 test65 \
         test69"
 
-tests="   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 \
+alltests="   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 \
          21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
          41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
          61 62 63 64 65 66 67 68 69\
@@ -23,11 +29,27 @@ tests="   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 \
 tests_no=`expr 0`
 
 # Directory must be owned by bin
-[ "$USER" != root ] || chown bin .
+[ "$ROOT" ] || chown bin .
 
 # If root, make sure the setuid tests have the correct permissions
-[ "$USER" = root ] && chown root ${setuids}
-[ "$USER" = root ] && chmod 4755 ${setuids}
+[ "$ROOT" ] && chown root ${setuids}
+[ "$ROOT" ] && chmod 4755 ${setuids}
+
+tests=$alltests
+
+# Are we given any args? If so, we might have to give
+# or change our testlist
+while getopts 'lt:' opt
+do
+       case $opt in
+       l)      echo "$alltests"
+               exit 0
+               ;;
+       t)      tests="$OPTARG"
+               ;;
+       ?)      echo "Usage: run [-l] [-t testlist]" >&2; exit 1
+       esac
+done
 
 # Count tests
 for i in `echo $tests`; do
@@ -36,10 +58,13 @@ for i in `echo $tests`; do
    fi
 done
 
-# Print test welcome message
-clear
-echo "Running POSIX compliance test suite. There are $tests_no tests in total."
-echo " "
+if [ "$tests" = "$alltests" ]
+then   # Print test welcome message
+       clear
+       echo -n "Running POSIX compliance test suite. "
+       echo "There are $tests_no tests in total."
+       echo " "
+fi
 
 # Provide an argument for test63
 ARGS_63=`pwd`/mod
@@ -54,7 +79,7 @@ do
       unset ARG
       testid="`echo $i | sed 's/\..*//'`"
       ARG=`eval echo "\\${ARGS_$testid}"`
-      if [ "$USER" = root ]
+      if [ "$ROOT" ]
          then su - bin -c "cd `pwd`; ./test$i $ARG" || FAIL=1
          else ./test$i $ARG || FAIL=1
       fi
@@ -69,12 +94,14 @@ do
 done
 
 # Print results of the tests.
-echo " "
-if test $total = $passed
-   then echo All $passed tests completed without error \($skipped skipped\).
-   else echo Testing completed. Score: $passed passed, $failed failed, \
-             skipped $skipped
-        echo The following tests failed: $badones
+if [ "$tests" = "$alltests" ]
+then   echo " "
+       if test $total = $passed
+          then echo All $passed tests completed without error \($skipped skipped\).
+          else echo Testing completed. Score: $passed passed, $failed failed, \
+                    skipped $skipped
+               echo The following tests failed: $badones
+       fi
 fi
 
 # echo " "