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

[PATCH 2/3] t7406: avoid having git commands upstream of a pipe

From
Elijah Newren <newren@gmail.com>
Date
Aug 6, 2018, 15:25 UTC
Message-ID
<20180806152524.27516-3-newren@gmail.com>
In-Reply-To
<20180806152524.27516-1-newren@gmail.com>

When a git command is on the left side of a pipe, the pipe will swallow its exit status, preventing us from detecting failures in said commands. Restructure the tests to put the output in a temporary file to avoid this problem.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 t/t7406-submodule-update.sh | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index e2405c96b5..c8971abd07 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -481,7 +481,8 @@ test_expect_success 'recursive submodule update - command in .git/config catches
 
 test_expect_success 'submodule init does not copy command into .git/config' '
 	(cd super &&
-	 H=$(git ls-files -s submodule | cut -d" " -f2) &&
+	 git ls-files -s submodule >out &&
+	 H=$(cut -d" " -f2 out) &&
 	 mkdir submodule1 &&
 	 git update-index --add --cacheinfo 160000 $H submodule1 &&
 	 git config -f .gitmodules submodule.submodule1.path submodule1 &&
@@ -579,9 +580,11 @@ test_expect_success 'submodule update - update=none in .git/config' '
 	  git checkout master &&
 	  compare_head
 	 ) &&
-	 git diff --name-only | grep submodule &&
+	 git diff --name-only >out &&
+	 grep submodule out &&
 	 git submodule update &&
-	 git diff --name-only | grep submodule &&
+	 git diff --name-only >out &&
+	 grep submodule out &&
 	 (cd submodule &&
 	  compare_head
 	 ) &&
@@ -597,7 +600,8 @@ test_expect_success 'submodule update - update=none in .git/config but --checkou
 	  git checkout master &&
 	  compare_head
 	 ) &&
-	 git diff --name-only | grep submodule &&
+	 git diff --name-only >out &&
+	 grep submodule out &&
 	 git submodule update --checkout &&
 	 test_must_fail git diff --name-only \| grep submodule &&
 	 (cd submodule &&
@@ -885,7 +889,8 @@ test_expect_success 'submodule update properly revives a moved submodule' '
 	 H=$(git rev-parse --short HEAD) &&
 	 git commit -am "pre move" &&
 	 H2=$(git rev-parse --short HEAD) &&
-	 git status | sed "s/$H/XXX/" >expect &&
+	 git status >out &&
+	 sed "s/$H/XXX/" out >expect &&
 	 H=$(cd submodule2 && git rev-parse HEAD) &&
 	 git rm --cached submodule2 &&
 	 rm -rf submodule2 &&
@@ -894,7 +899,8 @@ test_expect_success 'submodule update properly revives a moved submodule' '
 	 git config -f .gitmodules submodule.submodule2.path "moved/sub module" &&
 	 git commit -am "post move" &&
 	 git submodule update &&
-	 git status | sed "s/$H2/XXX/" >actual &&
+	 git status > out &&
+	 sed "s/$H2/XXX/" out >actual &&
 	 test_cmp expect actual
 	)
 '
@@ -912,7 +918,7 @@ test_expect_success SYMLINKS 'submodule update can handle symbolic links in pwd'
 
 test_expect_success 'submodule update clone shallow submodule' '
 	test_when_finished "rm -rf super3" &&
-	first=$(git -C cloned submodule status submodule |cut -c2-41) &&
+	first=$(git -C cloned rev-parse HEAD:submodule) &&
 	second=$(git -C submodule rev-parse HEAD) &&
 	commit_count=$(git -C submodule rev-list --count $first^..$second) &&
 	git clone cloned super3 &&
@@ -922,7 +928,7 @@ test_expect_success 'submodule update clone shallow submodule' '
 		sed -e "s#url = ../#url = file://$pwd/#" <.gitmodules >.gitmodules.tmp &&
 		mv -f .gitmodules.tmp .gitmodules &&
 		git submodule update --init --depth=$commit_count &&
-		test 1 = $(git -C submodule log --oneline | wc -l)
+		test 1 = $(git -C submodule rev-list --count HEAD)
 	)
 '
 
@@ -938,7 +944,7 @@ test_expect_success 'submodule update clone shallow submodule outside of depth'
 		test_i18ngrep "Direct fetching of that commit failed." actual &&
 		git -C ../submodule config uploadpack.allowReachableSHA1InWant true &&
 		git submodule update --init --depth=1 >actual &&
-		test 1 = $(git -C submodule log --oneline | wc -l)
+		test 1 = $(git -C submodule rev-list --count HEAD)
 	)
 '
 
-- 
2.18.0.548.gd57a518419
Previous: Elijah NewrenNext: SZEDER Gábor
Message 7 of 33 in “t7406: Make a test_must_fail call fail for the right reason”
  1. t7406: Make a test_must_fail call fail for the right reasonElijah Newren, Aug 3, 2018
  2. Junio C HamanoAug 3, 2018
  3. Eric SunshineAug 3, 2018
  4. Eric SunshineAug 3, 2018
  5. 0/2 Simple fixes to t7406Elijah Newren, Aug 6, 2018
  6. 1/3 t7406: simplify by using diff --name-only instead of diff --rawElijah Newren, Aug 6, 2018
  7. 2/3 t7406: avoid having git commands upstream of a pipeElijah Newren, Aug 6, 2018
  8. SZEDER GáborAug 6, 2018
  9. Elijah NewrenAug 6, 2018
  10. 3/3 t7406: make a test_must_fail call fail for the right reasonElijah Newren, Aug 6, 2018
  11. SZEDER GáborAug 7, 2018
  12. Elijah NewrenAug 7, 2018
  13. Martin ÅgrenAug 7, 2018
  14. Elijah NewrenAug 7, 2018
  15. 0/5 Simple fixes to t7406Elijah Newren, Aug 7, 2018
  16. 1/5 t7406: simplify by using diff --name-only instead of diff --rawElijah Newren, Aug 7, 2018
  17. Junio C HamanoAug 7, 2018
  18. Elijah NewrenAug 7, 2018
  19. Junio C HamanoAug 7, 2018
  20. 3/5 t7406: prefer test_* helper functions to test -[feds]Elijah Newren, Aug 7, 2018
  21. Junio C HamanoAug 7, 2018
  22. 5/5 t7406: fix call that was failing for the wrong reasonElijah Newren, Aug 7, 2018
  23. Junio C HamanoAug 7, 2018
  24. 4/5 t7406: avoid using test_must_fail for commands other than gitElijah Newren, Aug 7, 2018
  25. 2/5 t7406: avoid having git commands upstream of a pipeElijah Newren, Aug 7, 2018
  26. 0/5 Simple fixes to t7406Elijah Newren, Aug 8, 2018
  27. 5/5 t7406: avoid using test_must_fail for commands other than gitElijah Newren, Aug 8, 2018
  28. 2/5 t7406: simplify by using diff --name-only instead of diff --rawElijah Newren, Aug 8, 2018
  29. 4/5 t7406: prefer test_* helper functions to test -[feds]Elijah Newren, Aug 8, 2018
  30. 1/5 t7406: fix call that was failing for the wrong reasonElijah Newren, Aug 8, 2018
  31. 3/5 t7406: avoid having git commands upstream of a pipeElijah Newren, Aug 8, 2018
  32. SZEDER GáborAug 13, 2018
  33. Elijah NewrenAug 18, 2018

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.