Fix last remaining tests with -T under < 5.10
[dbsrgits/DBIx-Class.git] / maint / travis-ci_scripts / 40_script.bash
index 21a1d84..0a6ecd5 100755 (executable)
@@ -6,21 +6,33 @@ source maint/travis-ci_scripts/common.bash
 if [[ -n "$SHORT_CIRCUIT_SMOKE" ]] ; then exit 0 ; fi
 
 run_harness_tests() {
-  local -x HARNESS_OPTIONS=c:j$NUMTHREADS
+  local -x HARNESS_OPTIONS=c:j$VCPU_USE
+  # if we run under docker (! have_sudo) the logic below won't work
+  # it seems as if ulimit acts globally, across the entire OS
+  # and is thus not served properly by a localised `ps xH`
+  if [[ "$VCPU_USE" == 1 ]] && have_sudo ; then
+    ulim=$(( ( $(ps xH | wc -l) - 3 ) + 4 )) # (real count excluding header + ps + wc) + space for ( make + tee + harness + <actual test> )
+    echo_err "$(tstamp) Setting process/thread limit to $ulim"
+    ulimit -u $ulim
+    sleep 5 # needed to settle things down a bit
+  fi
   make test 2> >(tee "$TEST_STDERR_LOG")
 }
 
+# announce everything we have on this box
+TRAVIS="" perl -Ilib t/00describe_environment.t >/dev/null
+
 TEST_T0=$SECONDS
 if [[ "$CLEANTEST" = "true" ]] ; then
   echo_err "$(tstamp) Running tests with plain \`make test\`"
   run_or_err "Prepare blib" "make pure_all"
   run_harness_tests
 else
-  PROVECMD="prove -lrswj$NUMTHREADS xt t"
+  PROVECMD="prove -lrswTj$VCPU_USE xt t"
 
-  # FIXME - temporary, until Package::Stash is fixed
-  if perl -M5.010 -e 1 &>/dev/null ; then
-    PROVECMD="$PROVECMD -T"
+  # List every single SKIP/TODO when they are visible
+  if [[ "$VCPU_USE" == 1 ]] ; then
+    PROVECMD="$PROVECMD --directives"
   fi
 
   echo_err "$(tstamp) running tests with \`$PROVECMD\`"
@@ -28,7 +40,12 @@ else
 fi
 TEST_T1=$SECONDS
 
-if [[ -z "$DBIC_TRACE" ]] && [[ -z "$DBIC_MULTICREATE_DEBUG" ]] && [[ -s "$TEST_STDERR_LOG" ]] ; then
+if \
+   [[ -z "$DBIC_TRACE" ]] \
+&& [[ -z "$DBIC_MULTICREATE_DEBUG" ]] \
+&& [[ -z "$DBICTEST_DEBUG_CONCURRENCY_LOCKS" ]] \
+&& [[ -z "$DBICTEST_VERSION_WARNS_INDISCRIMINATELY" ]] \
+&& [[ -s "$TEST_STDERR_LOG" ]] ; then
   STDERR_LOG_SIZE=$(wc -l < "$TEST_STDERR_LOG")
 
   # prepend STDERR log
@@ -49,6 +66,6 @@ echo "${POSTMORTEM:- \o/ No notable smoke run issues \o/ }"
 echo
 echo "$(tstamp) Testing took a total of $(( $TEST_T1 - $TEST_T0 ))s"
 if [[ -n "$INSTALLDEPS_OUT" ]] ; then
-  echo "$(tstamp) Full dep install log at $(/usr/bin/nopaste -q -s Shadowcat -d DepInstall <<< "$INSTALLDEPS_OUT")"
+  echo "$(tstamp) Full dep install log at $(/usr/bin/perl /usr/bin/nopaste -q -s Shadowcat -d DepInstall <<< "$INSTALLDEPS_OUT")"
 fi
 echo