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

[PATCH 4/4] t5504: handle expected output from SIGPIPE death

From
Jeff King <peff@peff.net>
Date
Feb 24, 2016, 07:48 UTC
Message-ID
<20160224074836.GD9481@sigill.intra.peff.net>
In-Reply-To
<20160224073603.GA9163@sigill.intra.peff.net>

Commit 8bf4bec (add "ok=sigpipe" to test_must_fail and use it to fix flaky tests, 2015-11-27) taught t5504 to handle "git push" racily exiting with SIGPIPE rather than failing.

However, one of the tests checks the output of the command, as well. In the SIGPIPE case, we will not have produced any output. If we want the test to be truly non-flaky, we have to accept either output.

Signed-off-by: Jeff King <peff@peff.net>
---
I'm not sure we're really accomplishing anything with this test_cmp
anymore. We'll complain only if we get _some_ output, and it's not the
expected output. I'm not sure if that's actually useful.

It looks like 8bf4bec just dropped the test_cmp completely in one of the cases. So an alternative here would be to do the same.

We _could_ also tighten this, to make sure the output matches the exit code we got (right now we can get code=128 with blank output and not complain, even though that's clearly bogus). But we'd have to abandon test_must_fail and do things manually.

 t/t5504-fetch-receive-strict.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/t/t5504-fetch-receive-strict.sh b/t/t5504-fetch-receive-strict.sh
index 89224ed..a3e12d2 100755
--- a/t/t5504-fetch-receive-strict.sh
+++ b/t/t5504-fetch-receive-strict.sh
@@ -101,7 +101,10 @@ test_expect_success 'push with receive.fsckobjects' '
 		git config transfer.fsckobjects false
 	) &&
 	test_must_fail ok=sigpipe git push --porcelain dst master:refs/heads/test >act &&
-	test_cmp exp act
+	{
+		test_cmp exp act ||
+		! test -s act
+	}
 '
 
 test_expect_success 'push with transfer.fsckobjects' '
-- 
2.7.2.645.g4e1306c
Previous: Jeff King
Message 5 of 5 in “robustifying t5504”
  1. 0/4 robustifying t5504Jeff King, Feb 24, 2016
  2. 1/4 write_or_die: handle EPIPE in async threadsJeff King, Feb 24, 2016
  3. 2/4 fetch-pack: ignore SIGPIPE in sideband demuxerJeff King, Feb 24, 2016
  4. 3/4 test_must_fail: report number of unexpected signalJeff King, Feb 24, 2016
  5. 4/4 t5504: handle expected output from SIGPIPE deathJeff King, Feb 24, 2016

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.