-#!/bin/sh
+#!/bin/bash
set -e
# convenience script for running the tests outside adt-run
-# usage: tests/using-intree tests/run-all
+# usage: tests/using-intree tests/run-all [-p|--progressive] [tests/tests/*]
-set +e
-jcpus=`perl -MSys::CPU -we 'printf "-j%d\n",Sys::CPU::cpu_count()'`
-set -e
+set -o pipefail
+
+while [ $# != 0 ]; do
+ case "$1" in
+ --progressive|-p) shift; export DGIT_TESTS_PROGRESSIVE=y;;
+ --) shift; break ;;
+ -*) echo >&2 "run-all: unknown option $1"; exit 20 ;;
+ *) break ;;
+ esac
+done
+
+ncpus=$(nproc || echo 1)
+jcpus=-j$(( ncpus * 134 / 100 ))
if [ $# != 0 ]; then
set TESTSCRIPTS="$*"
fi
-set -x
-exec make $jcpus -k -f tests/Makefile "$@"
+mkdir -p tests/tmp
+
+${DGIT_TESTS_PROGRESSIVE+:} rm -f tests/tmp/*.ok
+
+export DGIT_GNUPG_STUNT_ERRLOG=$( tty -s ||: )
+
+(
+ set -x
+ exec make $jcpus -k -f tests/Makefile "$@"
+) 2>&1 |tee tests/tmp/run-all.log