Merge branch 'jc/test-yes-doc'
authorJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2019 00:59:54 +0000 (09:59 +0900)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2019 00:59:55 +0000 (09:59 +0900)
Test doc update.

* jc/test-yes-doc:
test: caution on our version of 'yes'

1  2 
t/README
t/test-lib.sh
diff --combined t/README
index 886bbec5bc8e40995817c042874be4860a4b58b8,f4e1a82657e05671201765622d6600ba8367204e..7a3d582267c7f8f70f018d95dbed4d085ed89f98
+++ b/t/README
@@@ -211,11 -211,6 +211,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
@@@ -932,6 -927,15 +932,15 @@@ library for your script to use
     test_oid_init or test_oid_cache.  Providing an unknown key is an
     error.
  
+  - yes [<string>]
+    This is often seen in modern UNIX but some platforms lack it, so
+    the test harness overrides the platform implementation with a
+    more limited one.  Use this only when feeding a handful lines of
+    output to the downstream---unlike the real version, it generates
+    only up to 99 lines.
  Prerequisites
  -------------
  
diff --combined t/test-lib.sh
index 8665b0a9b6186a7ad17889213f5225265c9f27d1,541a37f4c0a92bd498deaba5e47f5dcd29ea12be..4e79e140c90ba5aa8cdbe7daeafba45765cecd8e
@@@ -149,7 -149,7 +149,7 @@@ d
        --stress=*)
                stress=${opt#--*=}
                case "$stress" in
 -              *[^0-9]*|0*|"")
 +              *[!0-9]*|0*|"")
                        echo "error: --stress=<N> requires the number of jobs to run" >&2
                        exit 1
                        ;;
                        ;;
                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
@@@ -253,10 -242,8 +253,10 @@@ the
                                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=$!
  
        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
        fi
  fi
  
- # Provide an implementation of the 'yes' utility
+ # Provide an implementation of the 'yes' utility; the upper bound
+ # limit is there to help Windows that cannot stop this loop from
+ # wasting cycles when the downstream stops reading, so do not be
+ # tempted to turn it into an infinite loop. cf. 6129c930 ("test-lib:
+ # limit the output of the yes utility", 2016-02-02)
  yes () {
        if test $# = 0
        then