Re: Is t7006-pager.sh racy?
flat view
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-12-01 14:05:41
On Sun, Nov 21 2021, Jeff King wrote:
On Sun, Oct 24, 2021 at 07:03:49PM +0200, SZEDER Gábor wrote:quoted
quoted
What makes us expect that the "git log" invocation should trigger a SIGPIPE in the first place?A misunderstanding, perhaps, because those 'git log' commands with their early-exiting pagers rarely trigger SIGPIPE.I happened to be looking in this area today[1], and I think it turns out not to be "rarely", but rather "never" for some of the tests. The test in question sets the pager to "does-not-exist". But in that case we will realize immediately via run-command.c that we could not run the pager, and will not even redirect our stdout to it. For example, doing this: GIT_PAGER=does-not-exist git -c alias.foo='!yes' -p foo will never get SIGPIPE; it will just write infinitely to the original stdout, and return success. Whereas this: GIT_PAGER=false git -c alias.foo='!yes' -p foo will reliably get SIGPIPE. But even if we used it (with a while loop to instead of "yes" address the portability concern), the tests in t7006 would still be wrong, because they are sending test-terminal's output to a closed pipe (so we'd still see SIGPIPE regardless of Git's behavior). They should be sending test_terminal's output to a file or /dev/null. It seems like this thread stalled. Ævar, were you planning to fix these tests?
Not at this point I'm not! :) Anyway, a belated thanks for tackling this issue & sorry about the mess. I see jk/t7006-sigpipe-tests-fix is marked already & those fixes LGTM. This fell through the cracks for me among other E-Mail traffic.
[...]