Trap and display STDERR during travis test runs
Peter Rabbitson [Thu, 4 Apr 2013 03:20:43 +0000 (05:20 +0200)]
maint/travis-ci_scripts/40_script.bash
maint/travis-ci_scripts/common.bash

index c044507..f3dd078 100755 (executable)
@@ -5,15 +5,28 @@ if [[ -n "$SHORT_CIRCUIT_SMOKE" ]] ; then return ; fi
 
 export HARNESS_TIMER=1 HARNESS_OPTIONS=c:j$NUMTHREADS
 
-START_TIME=$SECONDS
+TEST_T0=$SECONDS
 if [[ "$CLEANTEST" = "true" ]] ; then
   echo_err "$(tstamp) Running tests with plain \`make test\`"
   run_or_err "Prepare blib" "make pure_all"
-  make test
+  make test 2> >(tee "$TEST_STDERR_LOG")
 else
   PROVECMD="prove -lrswj$NUMTHREADS t xt"
   echo_err "$(tstamp) running tests with \`$PROVECMD\`"
-  $PROVECMD
+  $PROVECMD 2> >(tee "$TEST_STDERR_LOG")
 fi
+TEST_T1=$SECONDS
 
-echo "$(tstamp) Testing took a total of $(( $SECONDS - $START_TIME ))s"
+if [[ -z "$DBICTRACE" ]] && [[ -z "$POISON_ENV" ]] && [[ -s "$TEST_STDERR_LOG" ]] ; then
+  STDERR_LOG_SIZE=$(wc -l < "$TEST_STDERR_LOG")
+
+  echo
+  echo "Test run produced $STDERR_LOG_SIZE lines of output on STDERR:"
+  echo "============================================================="
+  cat "$TEST_STDERR_LOG"
+  echo "============================================================="
+  echo "End of test run STDERR output ($STDERR_LOG_SIZE lines)"
+  echo
+fi
+
+echo "$(tstamp) Testing took a total of $(( $TEST_T1 - $TEST_T0 ))s"
index 20d5d63..ee8fa00 100755 (executable)
@@ -2,6 +2,8 @@
 
 set -e
 
+TEST_STDERR_LOG=/tmp/dbictest.stderr
+
 echo_err() { echo "$@" 1>&2 ; }
 
 if [[ "$TRAVIS" != "true" ]] ; then