summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--t/README5
-rw-r--r--t/test-lib.sh18
2 files changed, 21 insertions, 2 deletions
diff --git a/t/README b/t/README
index 11ce7675e3..3aed321248 100644
--- a/t/README
+++ b/t/README
@@ -202,6 +202,11 @@ appropriately before running "make".
'.stress-<nr>' suffix, and the trash directory of the failed
test job is renamed to end with a '.stress-failed' suffix.
+--stress-limit=<N>::
+ When combined with --stress run the test script repeatedly
+ this many times in each of the parallel jobs or until one of
+ them fails, whichever comes first.
+
You can also set the GIT_TEST_INSTALLED environment variable to
the bindir of an existing git installation to test that installation.
You still need to have built this git sandbox, from which various
diff --git a/t/test-lib.sh b/t/test-lib.sh
index a1abb1177a..77eff04c92 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -152,6 +152,17 @@ do
;;
esac
;;
+ --stress-limit=*)
+ stress_limit=${opt#--*=}
+ case "$stress_limit" in
+ *[^0-9]*|0*|"")
+ echo "error: --stress-limit=<N> requires the number of repetitions" >&2
+ exit 1
+ ;;
+ *) # Good.
+ ;;
+ esac
+ ;;
*)
echo "error: unknown test option '$opt'" >&2; exit 1 ;;
esac
@@ -237,8 +248,10 @@ then
exit 1
' TERM INT
- cnt=0
- while ! test -e "$stressfail"
+ cnt=1
+ while ! test -e "$stressfail" &&
+ { test -z "$stress_limit" ||
+ test $cnt -le $stress_limit ; }
do
$TEST_SHELL_PATH "$0" "$@" >"$TEST_RESULTS_BASE.stress-$job_nr.out" 2>&1 &
test_pid=$!
@@ -261,6 +274,7 @@ then
if test -f "$stressfail"
then
+ stress_exit=1
echo "Log(s) of failed test run(s):"
for failed_job_nr in $(sort -n "$stressfail")
do