chiark / gitweb /
changelog: start 7.1~
[dgit.git] / tests / run-all
index e1718fa991944b89107b8eff20820cb93aa714a8..736e0fe0a9189a42ef7295648a3630305085b10b 100755 (executable)
@@ -2,6 +2,9 @@
 set -e
 # convenience script for running the tests outside adt-run
 # usage: tests/using-intree tests/run-all [-p|--progressive] [tests/tests/*]
+#
+# passing `:' as if it were tests/tests/something is
+#  a no-op and therefore just means to (delete and) set up the tmpdir
 
 set -o pipefail
 
@@ -17,12 +20,18 @@ done
 ncpus=$(nproc || echo 1)
 jcpus=-j$(( ncpus * 134 / 100 ))
 
-if [ $# != 0 ]; then
-       set TESTSCRIPTS="$*"
+if [ "x$DGIT_TESTS_TMPDIR" != x ]; then
+       tmpdir="$PWD"
+       tmpdir="${tmpdir#/}"
+       tmpdir="${tmpdir//!/!#!}"
+       tmpdir="${tmpdir//\//!}"
+       tmpdir="$DGIT_TESTS_TMPDIR/$tmpdir"
+       rm -f tests/tmp
+       ln -ns -- "$tmpdir" tests/tmp
+else
+       tmpdir=tests/tmp
 fi
 
-tmpdir=tests/tmp
-
 case "$DGIT_TESTS_PROGRESSIVE" in
 ''|n)
        rm -rf -- "$tmpdir"
@@ -31,6 +40,16 @@ esac
 
 mkdir -p -- "$tmpdir"
 
+case "$1" in
+:)
+       shift
+       if [ $# = 0 ]; then exit 0; fi
+       ;;
+esac
+
+if [ $# != 0 ]; then
+       set TESTSCRIPTS="$*"
+fi
 
 export DGIT_GNUPG_STUNT_ERRLOG=$( tty -s ||: )