t4053: avoid race when killing background processes
commit231e86c10c674235cf28447a8486f7955d5f4dd9
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 10 Aug 2023 14:33:13 +0000 (10 14:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Aug 2023 16:16:27 +0000 (10 09:16 -0700)
tree29a698f58cb2e00a6d0192bb56826082a104b9b6
parent1e3f26542a6ecd3006c2c0d5ccc0bae4a700f7e5
t4053: avoid race when killing background processes

The test 'diff --no-index reads from pipes' starts a couple of
background processes that write to the pipes that are passed to "diff
--no-index". If the test passes then we expect these processes to exit
as all their output will have been read. However if the test fails
then we want to make sure they do not hang about on the users machine
and the test remembers they should be killed by calling

      test_when_finished  "! kill $!"

after each background process is created. Unfortunately there is a
race where test_when_finished may run before the background process
exits even when all its output has been read resulting in the kill
command succeeding which causes the test to fail. Fix this by ignoring
the exit status of the kill command. If the diff is successful we
could instead wait for the background process to exit and check their
status but that feels like it is testing the platform's printf
implementation rather than git's code.

Reported-by: Jeff King <peff@peff.net>
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4053-diff-no-index.sh