Whamcloud - gitweb
LU-1779 tests: fix run_one_logged() to log SKIP status
[fs/lustre-release.git] / lustre / tests / test-framework.sh
index 3096dc2..e41073b 100644 (file)
@@ -3058,13 +3058,19 @@ skip_env () {
     $FAIL_ON_SKIP_ENV && error false $@ || skip $@
 }
 
-skip () {
+skip() {
     echo
-    log " SKIP: ${TESTSUITE} ${TESTNAME} $@"
-    [ "$ALWAYS_SKIPPED" ] && \
-        skip_logged ${TESTNAME} "$@" || true
-    [ "$TESTSUITELOG" ] && \
-        echo "${TESTSUITE}: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
+    log " SKIP: $TESTSUITE $TESTNAME $@"
+
+    if [[ -n "$ALWAYS_SKIPPED" ]]; then
+        skip_logged $TESTNAME "$@"
+    else
+        mkdir -p $LOGDIR
+        echo "$@" > $LOGDIR/skip
+    fi
+
+    [[ -n "$TESTSUITELOG" ]] &&
+        echo "$TESTSUITE: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
 }
 
 build_test_filter() {
@@ -3132,41 +3138,36 @@ run_test() {
         echo -n "."
         return 0
     fi
+
+    LAST_SKIPPED="y"
+    ALWAYS_SKIPPED="y"
     testname=EXCEPT_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping excluded test $1"
         return 0
     fi
     testname=EXCEPT_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping excluded test $1 (base $base)"
         return 0
     fi
     testname=EXCEPT_ALWAYS_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
-        ALWAYS_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1"
         return 0
     fi
     testname=EXCEPT_ALWAYS_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
-        ALWAYS_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1 (base $base)"
         return 0
     fi
     testname=EXCEPT_SLOW_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping SLOW test $1"
         return 0
     fi
     testname=EXCEPT_SLOW_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping SLOW test $1 (base $base)"
         return 0
     fi
@@ -3214,11 +3215,13 @@ complete () {
 }
 
 pass() {
-    # Set TEST_STATUS here; will be used for logging the result
-    if [ -f $LOGDIR/err ]; then
+    # Set TEST_STATUS here. It will be used for logging the result.
+    TEST_STATUS="PASS"
+
+    if [[ -f $LOGDIR/err ]]; then
         TEST_STATUS="FAIL"
-    else
-        TEST_STATUS="PASS"
+    elif [[ -f $LOGDIR/skip ]]; then
+        TEST_STATUS="SKIP"
     fi
     echo "$TEST_STATUS $@" 2>&1 | tee -a $TESTSUITELOG
 }
@@ -3294,6 +3297,7 @@ run_one_logged() {
     local name=${TESTSUITE}.test_${1}.test_log.$(hostname -s).log
     local test_log=$LOGDIR/$name
     rm -rf $LOGDIR/err
+    rm -rf $LOGDIR/skip
     local SAVE_UMASK=`umask`
     umask 0022
 
@@ -3307,7 +3311,12 @@ run_one_logged() {
 
     duration=$((`date +%s` - $BEFORE))
     pass "$1" "(${duration}s)"
-    [ -f $LOGDIR/err ] && TEST_ERROR=$(cat $LOGDIR/err)
+
+    if [[ -f $LOGDIR/err ]]; then
+        TEST_ERROR=$(cat $LOGDIR/err)
+    elif [[ -f $LOGDIR/skip ]]; then
+        TEST_ERROR=$(cat $LOGDIR/skip)
+    fi
     log_sub_test_end $TEST_STATUS $duration "$RC" "$TEST_ERROR"
 
     if [ -f $LOGDIR/err ]; then
@@ -3324,7 +3333,8 @@ run_one_logged() {
 #
 skip_logged(){
     log_sub_test_begin $1
-    log_sub_test_end "SKIP" "0" "0" "\"$2\""
+    shift
+    log_sub_test_end "SKIP" "0" "0" "$@"
 }
 
 canonical_path() {