X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=tests%2Frun-all;h=736e0fe0a9189a42ef7295648a3630305085b10b;hb=b093090b8d5a24cbc40a9e9b517f3f55a2144d47;hp=cfa5ce2ff1ac7c260ca04fd088547dd15b5aef84;hpb=3c29a528a1b7241778f947a38d3ee5a8e2fb2154;p=dgit.git diff --git a/tests/run-all b/tests/run-all index cfa5ce2f..736e0fe0 100755 --- a/tests/run-all +++ b/tests/run-all @@ -1,20 +1,56 @@ #!/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/*] +# +# 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 -set +e -jcpus=`perl -MSys::CPU -we 'printf "-j%d\n", 1.34 * Sys::CPU::cpu_count()'` -set -e +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 [ "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 + +case "$DGIT_TESTS_PROGRESSIVE" in +''|n) + rm -rf -- "$tmpdir" + ;; +esac + +mkdir -p -- "$tmpdir" + +case "$1" in +:) + shift + if [ $# = 0 ]; then exit 0; fi + ;; +esac if [ $# != 0 ]; then set TESTSCRIPTS="$*" fi -mkdir -p tests/tmp - export DGIT_GNUPG_STUNT_ERRLOG=$( tty -s ||: ) (