git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 11/11] tests: add a "set -o pipefail" for a patched bash

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jan 16, 2021, 15:35 UTC
Message-ID
<20210116153554.12604-12-avarab@gmail.com>
In-Reply-To
<20210114233515.31298-1-avarab@gmail.com>

Add a "set -o pipefail" test mode to the test suite to detect failures in "git" its output is fed directly to a pipe. Doing so is a pattern we discourage[1] in the test suite, but we've got plenty of tests like that. Now we can reliably detect those failures.

There was a previous attempt in [2] to add such a test mode, but as noted by Jeff King in [3] adding it is a matter of peeing against the wind with current bash semantics of failing on SIGPIPE.

This series relies on a patch of mine to bash, which I'm submitting upstream, while not breaking anything for vanilla bash users. They won't have GIT_TEST_PIPEFAIL turned on for them, and will only get breakages if they turn it on explicitly with "GIT_TEST_PIPEFAIL=true".

Vanilla bash ignores SIGPIPE under "set -e" since version 3.1. It's only under "set -o pipefail" (added in 3.2) that it doesn't take account of SIGPIPE, in a seeming omission nobody bothered to fix yet.

Patching bash[4] with:
    diff --git a/jobs.c b/jobs.c
    index a581f305..fa5de82a 100644
    --- a/jobs.c
    +++ b/jobs.c
    @@ -2851,8 +2851,14 @@ raw_job_exit_status (job)
           p = jobs[job]->pipe;
           do
     	{
    -	  if (WSTATUS (p->status) != EXECUTION_SUCCESS)
    -	    fail = WSTATUS(p->status);
    +	  if (WSTATUS (p->status) != EXECUTION_SUCCESS
    +#if defined (DONT_REPORT_SIGPIPE)
    +              && WTERMSIG (p->status) != SIGPIPE
    +#endif
    +              )
    +            {
    +              fail = WSTATUS(p->status);
    +            }
     	  p = p->next;
     	}
           while (p != jobs[job]->pipe);
Makes it useful for something like the git test suite.

Under this test mode we only tests we need to skip those tests which are explicitly testing that a piped command returned SIGPIPE. Those tests will now return 0 instead of an exit code indicating SIGPIPE.

Forcing the mode to run under vanilla bash with "GIT_TEST_PIPEFAIL=true" doesn't fail any tests for me, except the test in t0000-basic.sh which explicitly checks for the desired pipefail semantics. However, as Jeff noted in [3] that absence of failure isn't reliable. I might not see some of the failures due to the racy nature of how vanilla "set -o pipefail" interacts with *nix pipe semantics.

1. a378fee5b0 (Documentation: add shell guidelines, 2018-10-05)
2. https://lore.kernel.org/git/cover.1573779465.git.liu.denton@gmail.com/
3. https://lore.kernel.org/git/20191115040909.GA21654@sigill.intra.peff.net/
4. https://github.com/bminor/bash/compare/master...avar:avar/ignore-sigterm-and-sigpipe-on-pipe-fail
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/README              |  5 +++++
 t/t0000-basic.sh      |  4 ++++
 t/t0005-signals.sh    |  4 ++--
 t/t3600-rm.sh         |  5 ++++-
 t/t5000-tar-tree.sh   |  2 +-
 t/t9902-completion.sh |  5 +++++
 t/test-lib.sh         | 29 +++++++++++++++++++++++++++++
 7 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/t/README b/t/README
index c730a70770..cecc00442d 100644
--- a/t/README
+++ b/t/README
@@ -439,6 +439,11 @@ GIT_TEST_DEFAULT_HASH=<hash-algo> specifies which hash algorithm to
 use in the test scripts. Recognized values for <hash-algo> are "sha1"
 and "sha256".
 
+GIT_TEST_PIPEFAIL=<boolean>, when true, run 'set -o pipefail' to catch
+failures in commands that aren't the last in a pipe. Defaults to true
+on bash versions which know how to ignore SIGPIPE failures under the
+'set -o pipefail' mode.
+
 Naming Tests
 ------------
 
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index f4ba2e8c85..38e04b9ce0 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -1326,4 +1326,8 @@ test_expect_success 'test_must_fail rejects a non-git command with env' '
 	grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
 '
 
+test_expect_success BASH_SET_O_PIPEFAIL 'our bash under "set -o pipefail" mode ignores SIGPIPE failures' '
+	yes | head -n 1 | true
+'
+
 test_done
diff --git a/t/t0005-signals.sh b/t/t0005-signals.sh
index 4c214bd11c..cc5784a274 100755
--- a/t/t0005-signals.sh
+++ b/t/t0005-signals.sh
@@ -40,12 +40,12 @@ test_expect_success 'create blob' '
 	git add file
 '
 
-test_expect_success !MINGW 'a constipated git dies with SIGPIPE' '
+test_expect_success !MINGW,!BASH_SET_O_PIPEFAIL 'a constipated git dies with SIGPIPE' '
 	OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
 	test_match_signal 13 "$OUT"
 '
 
-test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' '
+test_expect_success !MINGW,!BASH_SET_O_PIPEFAIL 'a constipated git dies with SIGPIPE even if parent ignores it' '
 	OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) &&
 	test_match_signal 13 "$OUT"
 '
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index 4f7e62d05c..7b5d92add5 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -251,7 +251,10 @@ test_expect_success 'choking "git rm" should not let it die with cruft' '
 		i=$(( $i + 1 ))
 	done | git update-index --index-info &&
 	OUT=$( ((trap "" PIPE; git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) &&
-	test_match_signal 13 "$OUT" &&
+	if ! test_have_prereq BASH_SET_O_PIPEFAIL
+	then
+		test_match_signal 13 "$OUT"
+	fi &&
 	test_path_is_missing .git/index.lock
 '
 
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index 3ebb0d3b65..3adcbce84c 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -416,7 +416,7 @@ test_expect_success LONG_IS_64BIT 'set up repository with huge blob' '
 
 # We expect git to die with SIGPIPE here (otherwise we
 # would generate the whole 64GB).
-test_expect_success LONG_IS_64BIT 'generate tar with huge size' '
+test_expect_success LONG_IS_64BIT,!BASH_SET_O_PIPEFAIL 'generate tar with huge size' '
 	{
 		git archive HEAD
 		echo $? >exit-code
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index c4a7758409..947294bebb 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -7,6 +7,11 @@ test_description='test bash completion'
 
 . ./lib-bash.sh
 
+if test -n "$GIT_TEST_PIPEFAIL_TRUE"
+then
+	set +o pipefail
+fi
+
 complete ()
 {
 	# do nothing
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 9fa7c1d0f6..118dc80ffc 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -36,6 +36,31 @@ then
 fi
 GIT_BUILD_DIR="$TEST_DIRECTORY"/..
 
+# Does "set -o pipefail" on this bash version handle SIGPIPE? Use it!
+. "$TEST_DIRECTORY/lib-bash-detection.sh"
+GIT_TEST_PIPEFAIL_TRUE=
+GIT_TEST_PIPEFAIL_DEFAULT=false
+if test -n "$TEST_SH_IS_BIN_BASH" &&
+       $BASH -c 'set -eo pipefail; yes | head -n 1 >/dev/null'
+then
+	GIT_TEST_PIPEFAIL_DEFAULT=true
+fi
+# We're too early for test_bool_env
+if git env--helper --type=bool --default="$GIT_TEST_PIPEFAIL_DEFAULT" \
+       --exit-code GIT_TEST_PIPEFAIL
+then
+	set -o pipefail
+
+	# Only "set -o pipefail" in the main test scripts, not any
+	# sub-programs we spawn.
+	GIT_TEST_PIPEFAIL=
+	export GIT_TEST_PIPEFAIL
+
+	# For the convenience of the prereq for it.
+	GIT_TEST_PIPEFAIL_TRUE=true
+	export GIT_TEST_PIPEFAIL_TRUE
+fi
+
 # If we were built with ASAN, it may complain about leaks
 # of program-lifetime variables. Disable it by default to lower
 # the noise level. This needs to happen at the start of the script,
@@ -1552,6 +1577,10 @@ test_lazy_prereq PIPE '
 	rm -f testfifo && mkfifo testfifo
 '
 
+test_lazy_prereq BASH_SET_O_PIPEFAIL '
+	test -n "$GIT_TEST_PIPEFAIL_TRUE"
+'
+
 test_lazy_prereq SYMLINKS '
 	# test whether the filesystem supports symbolic links
 	ln -s x y && test -h y
-- 
2.29.2.222.g5d2a92d10f8
Previous: Ævar Arnfjörð BjarmasonNext: SZEDER Gábor
Message 46 of 228 in “t: general test cleanup + `set -o pipefail`”
  1. 00/27 t: general test cleanup + `set -o pipefail`Denton Liu, Nov 15, 2019
  2. 01/27 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 15, 2019
  3. Eric SunshineNov 15, 2019
  4. Junio C HamanoNov 16, 2019
  5. 02/27 t0014: remove git command upstream of pipeDenton Liu, Nov 15, 2019
  6. 03/27 t0090: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  7. 04/27 t3301: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  8. 06/27 t3600: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  9. 05/27 t3600: use test_line_count() where possibleDenton Liu, Nov 15, 2019
  10. 07/27 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 15, 2019
  11. 09/27 t4015: use test_write_lines()Denton Liu, Nov 15, 2019
  12. 08/27 t4015: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  13. 10/27 t4138: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  14. Eric SunshineNov 16, 2019
  15. 11/27 t5317: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  16. 12/27 t5317: use ! grep to check for no matching linesDenton Liu, Nov 15, 2019
  17. Eric SunshineNov 16, 2019
  18. 13/27 t5703: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  19. Eric SunshineNov 16, 2019
  20. 14/27 t7501: remove spaces after redirect operatorsDenton Liu, Nov 15, 2019
  21. 15/27 t7501: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  22. Eric SunshineNov 16, 2019
  23. 16/27 t7700: drop redirections to /dev/nullDenton Liu, Nov 15, 2019
  24. 17/27 t7700: remove spaces after redirect operatorsDenton Liu, Nov 15, 2019
  25. 19/27 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 15, 2019
  26. 18/27 t7700: move keywords onto their own lineDenton Liu, Nov 15, 2019
  27. 20/27 t7700: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  28. 21/27 t: define test_grep_return_success()Denton Liu, Nov 15, 2019
  29. Junio C HamanoNov 15, 2019
  30. 22/27 t0090: mask failing grep statusDenton Liu, Nov 15, 2019
  31. 23/27 t3600: mark git command as failingDenton Liu, Nov 15, 2019
  32. Junio C HamanoNov 15, 2019
  33. 24/27 t5004: ignore SIGPIPE in zipinfoDenton Liu, Nov 15, 2019
  34. Junio C HamanoNov 15, 2019
  35. 25/27 t5703: mask failing grep statusDenton Liu, Nov 15, 2019
  36. 26/27 t9902: disable pipefailDenton Liu, Nov 15, 2019
  37. 27/27 t: run tests with `set -o pipefail` on BashDenton Liu, Nov 15, 2019
  38. Jeff KingNov 15, 2019
  39. 0/6 tests: add a bash "set -o pipefail" test modeÆvar Arnfjörð Bjarmason, Jan 14, 2021
  40. 09/11 archive tests: use a cheaper "zipinfo -h" invocation to get headerÆvar Arnfjörð Bjarmason, Jan 16, 2021
  41. Jeff KingJan 17, 2021
  42. 08/11 upload-pack tests: avoid a non-zero "grep" exit statusÆvar Arnfjörð Bjarmason, Jan 16, 2021
  43. Junio C HamanoJan 16, 2021
  44. 10/11 tests: split up bash detection libraryÆvar Arnfjörð Bjarmason, Jan 16, 2021
  45. 05/11 git svn mergeinfo tests: refactor "test -z" to use test_must_be_emptyÆvar Arnfjörð Bjarmason, Jan 16, 2021
  46. 11/11 tests: add a "set -o pipefail" for a patched bashÆvar Arnfjörð Bjarmason, Jan 16, 2021
  47. SZEDER GáborJan 20, 2021
  48. Junio C HamanoJan 23, 2021
  49. Junio C HamanoJan 23, 2021
  50. Ævar Arnfjörð BjarmasonJan 23, 2021
  51. 01/10 cache-tree tests: refactor for modern test styleÆvar Arnfjörð Bjarmason, Jan 23, 2021
  52. Junio C HamanoJan 23, 2021
  53. 00/10 Miscellaneous "set -o pipefail"-related test cleanupsÆvar Arnfjörð Bjarmason, Jan 23, 2021
  54. 02/10 cache-tree tests: remove unused $2 parameterÆvar Arnfjörð Bjarmason, Jan 23, 2021
  55. Junio C HamanoJan 23, 2021
  56. 03/10 cache-tree tests: use a sub-shell with less indirectionÆvar Arnfjörð Bjarmason, Jan 23, 2021
  57. Junio C HamanoJan 23, 2021
  58. 04/10 cache-tree tests: explicitly test HEAD and index differencesÆvar Arnfjörð Bjarmason, Jan 23, 2021
  59. 05/10 git svn mergeinfo tests: modernize redirection & quoting styleÆvar Arnfjörð Bjarmason, Jan 23, 2021
  60. 06/10 git svn mergeinfo tests: refactor "test -z" to use test_must_be_emptyÆvar Arnfjörð Bjarmason, Jan 23, 2021
  61. 07/10 git-svn tests: rewrite brittle tests to use "--[no-]merges".Ævar Arnfjörð Bjarmason, Jan 23, 2021
  62. 08/10 upload-pack tests: avoid a non-zero "grep" exit statusÆvar Arnfjörð Bjarmason, Jan 23, 2021
  63. 10/10 rm tests: actually test for SIGPIPE in SIGPIPE testÆvar Arnfjörð Bjarmason, Jan 23, 2021
  64. 09/10 archive tests: use a cheaper "zipinfo -h" invocation to get headerÆvar Arnfjörð Bjarmason, Jan 23, 2021
  65. Ævar Arnfjörð BjarmasonJan 23, 2021
  66. 02/11 cache-tree tests: use a sub-shell with less indirectionÆvar Arnfjörð Bjarmason, Jan 16, 2021
  67. Jeff KingJan 17, 2021
  68. Eric SunshineJan 17, 2021
  69. Junio C HamanoJan 17, 2021
  70. 07/11 rm tests: actually test for SIGPIPE in SIGPIPE testÆvar Arnfjörð Bjarmason, Jan 16, 2021
  71. 03/11 cache-tree tests: refactor overly complex functionÆvar Arnfjörð Bjarmason, Jan 16, 2021
  72. Junio C HamanoJan 16, 2021
  73. 01/11 cache-tree tests: remove unused $2 parameterÆvar Arnfjörð Bjarmason, Jan 16, 2021
  74. 06/11 git-svn tests: rewrite brittle tests to use "--[no-]merges".Ævar Arnfjörð Bjarmason, Jan 16, 2021
  75. Junio C HamanoJan 16, 2021
  76. Jeff KingJan 17, 2021
  77. 04/11 git svn mergeinfo tests: modernize redirection & quoting styleÆvar Arnfjörð Bjarmason, Jan 16, 2021
  78. Junio C HamanoJan 16, 2021
  79. 00/11 tests: add a bash "set -o pipefail" test modeÆvar Arnfjörð Bjarmason, Jan 16, 2021
  80. Junio C HamanoJan 16, 2021
  81. Jeff KingJan 17, 2021
  82. 2/6 test-lib: add ok=* support to test_might_failÆvar Arnfjörð Bjarmason, Jan 14, 2021
  83. 1/6 test-lib: add tests for test_might_failÆvar Arnfjörð Bjarmason, Jan 14, 2021
  84. Jeff KingJan 15, 2021
  85. test-lib: add tests for test_might_failÆvar Arnfjörð Bjarmason, Jan 16, 2021
  86. Jeff KingJan 17, 2021
  87. 4/6 tests: use "test_might_fail ok=sigpipe grep" when appropriateÆvar Arnfjörð Bjarmason, Jan 14, 2021
  88. Ævar Arnfjörð BjarmasonJan 15, 2021
  89. Jeff KingJan 15, 2021
  90. 3/6 test_lib: allow test_{must,might}_fail to accept non-git on "sigpipe"Ævar Arnfjörð Bjarmason, Jan 14, 2021
  91. Denton LiuJan 15, 2021
  92. Ævar Arnfjörð BjarmasonJan 15, 2021
  93. Jeff KingJan 15, 2021
  94. 5/6 tests: split up bash detection libraryÆvar Arnfjörð Bjarmason, Jan 14, 2021
  95. Ævar Arnfjörð BjarmasonJan 15, 2021
  96. 6/6 tests: add a "set -o pipefail" for a patched bashÆvar Arnfjörð Bjarmason, Jan 14, 2021
  97. Jeff KingJan 15, 2021
  98. 00/21 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 21, 2019
  99. 01/21 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 21, 2019
  100. 02/21 t0014: remove git command upstream of pipeDenton Liu, Nov 21, 2019
  101. 03/21 t0090: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  102. 04/21 t3301: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  103. 05/21 t3600: use test_line_count() where possibleDenton Liu, Nov 21, 2019
  104. 06/21 t3600: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  105. 07/21 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 21, 2019
  106. 08/21 t4015: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  107. 09/21 t4015: use test_write_lines()Denton Liu, Nov 21, 2019
  108. 10/21 t4138: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  109. 11/21 t5317: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  110. 12/21 t5317: use ! grep to check for no matching linesDenton Liu, Nov 21, 2019
  111. Eric SunshineNov 21, 2019
  112. 13/21 t5703: simplify one-time-sed generation logicDenton Liu, Nov 21, 2019
  113. Eric SunshineNov 21, 2019
  114. Denton LiuNov 21, 2019
  115. 14/21 t5703: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  116. 15/21 t7501: remove spaces after redirect operatorsDenton Liu, Nov 21, 2019
  117. 16/21 t7501: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  118. 17/21 t7700: drop redirections to /dev/nullDenton Liu, Nov 21, 2019
  119. 18/21 t7700: remove spaces after redirect operatorsDenton Liu, Nov 21, 2019
  120. 19/21 t7700: move keywords onto their own lineDenton Liu, Nov 21, 2019
  121. 20/21 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 21, 2019
  122. 21/21 t7700: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  123. 00/22 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 22, 2019
  124. 01/22 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 22, 2019
  125. 02/22 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 22, 2019
  126. Junio C HamanoNov 23, 2019
  127. 03/22 t0014: remove git command upstream of pipeDenton Liu, Nov 22, 2019
  128. 04/22 t0090: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  129. 05/22 t3301: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  130. 06/22 t3600: use test_line_count() where possibleDenton Liu, Nov 22, 2019
  131. 07/22 t3600: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  132. 08/22 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 22, 2019
  133. 09/22 t4015: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  134. 10/22 t4015: use test_write_lines()Denton Liu, Nov 22, 2019
  135. 11/22 t4138: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  136. 12/22 t5317: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  137. 13/22 t5317: use ! grep to check for no matching linesDenton Liu, Nov 22, 2019
  138. Eric SunshineNov 23, 2019
  139. Denton LiuNov 25, 2019
  140. 14/22 t5703: simplify one-time-sed generation logicDenton Liu, Nov 22, 2019
  141. 15/22 t5703: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  142. 16/22 t7501: remove spaces after redirect operatorsDenton Liu, Nov 22, 2019
  143. 17/22 t7501: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  144. 18/22 t7700: drop redirections to /dev/nullDenton Liu, Nov 22, 2019
  145. 19/22 t7700: remove spaces after redirect operatorsDenton Liu, Nov 22, 2019
  146. 20/22 t7700: move keywords onto their own lineDenton Liu, Nov 22, 2019
  147. 21/22 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 22, 2019
  148. 22/22 t7700: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  149. Junio C HamanoNov 23, 2019
  150. Denton LiuNov 25, 2019
  151. Eric SunshineNov 26, 2019
  152. Junio C HamanoNov 26, 2019
  153. Denton LiuNov 26, 2019
  154. 00/27 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 26, 2019
  155. 01/27 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 26, 2019
  156. 02/27 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 26, 2019
  157. 03/27 t0014: remove git command upstream of pipeDenton Liu, Nov 26, 2019
  158. 04/27 t0090: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  159. 05/27 t3301: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  160. 06/27 t3600: use test_line_count() where possibleDenton Liu, Nov 26, 2019
  161. 07/27 t3600: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  162. 08/27 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 26, 2019
  163. 09/27 t4015: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  164. 10/27 t4015: use test_write_lines()Denton Liu, Nov 26, 2019
  165. 11/27 t4138: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  166. 12/27 t5317: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  167. 13/27 t5317: use ! grep to check for no matching linesDenton Liu, Nov 26, 2019
  168. 14/27 t5703: simplify one-time-sed generation logicDenton Liu, Nov 26, 2019
  169. 15/27 t5703: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  170. 16/27 t7501: remove spaces after redirect operatorsDenton Liu, Nov 26, 2019
  171. 17/27 t7501: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  172. 18/27 t7700: drop redirections to /dev/nullDenton Liu, Nov 26, 2019
  173. 19/27 t7700: remove spaces after redirect operatorsDenton Liu, Nov 26, 2019
  174. 20/27 t7700: move keywords onto their own lineDenton Liu, Nov 26, 2019
  175. 21/27 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 26, 2019
  176. 22/27 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 26, 2019
  177. Eric SunshineNov 26, 2019
  178. 23/27 squash! t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 26, 2019
  179. 24/27 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Nov 26, 2019
  180. 25/27 t7700: replace egrep with grepDenton Liu, Nov 26, 2019
  181. 26/27 t7700: make references to SHA-1 genericDenton Liu, Nov 26, 2019
  182. Eric SunshineNov 26, 2019
  183. 27/27 t7700: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  184. 00/26 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 27, 2019
  185. 01/26 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 27, 2019
  186. 02/26 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 27, 2019
  187. 03/26 t0014: remove git command upstream of pipeDenton Liu, Nov 27, 2019
  188. 04/26 t0090: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  189. 05/26 t3301: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  190. 06/26 t3600: use test_line_count() where possibleDenton Liu, Nov 27, 2019
  191. 07/26 t3600: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  192. 08/26 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 27, 2019
  193. 09/26 t4015: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  194. 11/26 t4138: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  195. 10/26 t4015: use test_write_lines()Denton Liu, Nov 27, 2019
  196. 12/26 t5317: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  197. 13/26 t5317: use ! grep to check for no matching linesDenton Liu, Nov 27, 2019
  198. 14/26 t5703: simplify one-time-sed generation logicDenton Liu, Nov 27, 2019
  199. 15/26 t5703: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  200. 16/26 t7501: remove spaces after redirect operatorsDenton Liu, Nov 27, 2019
  201. 17/26 t7501: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  202. 18/26 t7700: drop redirections to /dev/nullDenton Liu, Nov 27, 2019
  203. 19/26 t7700: remove spaces after redirect operatorsDenton Liu, Nov 27, 2019
  204. 20/26 t7700: move keywords onto their own lineDenton Liu, Nov 27, 2019
  205. 21/26 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 27, 2019
  206. 22/26 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 27, 2019
  207. Junio C HamanoNov 29, 2019
  208. Denton LiuDec 2, 2019
  209. Junio C HamanoDec 2, 2019
  210. Denton LiuDec 2, 2019
  211. Junio C HamanoDec 3, 2019
  212. Denton LiuDec 4, 2019
  213. Junio C HamanoDec 4, 2019
  214. 0/5 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Dec 4, 2019
  215. 1/5 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Dec 4, 2019
  216. 2/5 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Dec 4, 2019
  217. 3/5 t7700: replace egrep with grepDenton Liu, Dec 4, 2019
  218. 4/5 t7700: make references to SHA-1 genericDenton Liu, Dec 4, 2019
  219. 5/5 t7700: stop losing return codes of git commandsDenton Liu, Dec 4, 2019
  220. Junio C HamanoDec 4, 2019
  221. 23/26 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Nov 27, 2019
  222. 24/26 t7700: replace egrep with grepDenton Liu, Nov 27, 2019
  223. 25/26 t7700: make references to SHA-1 genericDenton Liu, Nov 27, 2019
  224. 26/26 t7700: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  225. Danh DoanNov 30, 2019
  226. Eric SunshineNov 30, 2019
  227. Junio C HamanoNov 30, 2019
  228. t: remove inappropriate uses of test_must_fail(), was Re: [PATCH v5 26/26] t7700: stop losing return codes of git commandsDenton Liu, Dec 4, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.