Subject: Re: [PATCH jn/pager-lv-default-env] pager test: make fake pager consume all its input

From: Junio C Hamano <[email-masked]>
Date: Fri, 31 Jan 2014 09:07:44 -0800

Jonathan Nieder <[email-masked]> writes:

> Otherwise there is a race: if 'git log' finishes writing before the
> pager terminates and closes the pipe, all is well, and if the pager
> finishes quickly enough then 'git log' terminates with SIGPIPE.
>
>  died of signal 13 at /build/buildd/git-1.9~rc1/t/test-terminal.perl line 33.
>  not ok 6 - LESS and LV envvars are set for pagination
>
> Noticed on Ubuntu PPA builders, where the race was lost about half the
> time.  Compare v1.7.0.2~6^2 (tests: Fix race condition in t7006-pager,
> 2010-02-22).
>
> Reported-by: Anders Kaseorg <[email-masked]>
> Signed-off-by: Jonathan Nieder <[email-masked]>
> ---

Thanks.  The use of "wc" looks cute (I would have used "cat").

> Anders Kaseorg wrote:
>> On 01/06/2014 09:14 PM, Jonathan Nieder wrote:
>
>>> +		PAGER="env >pager-env.out" &&
>>> +		export PAGER &&
>>> +
>>> +		test_terminal git log
> [...]
>> On the Ubuntu PPA builders, I’m seeing this new test fail with
>> SIGPIPE about half the time:
>>
>> died of signal 13 at /build/buildd/git-1.9~rc1/t/test-terminal.perl line 33.
>> not ok 6 - LESS and LV envvars are set for pagination
>
> Good catch.  Sorry for the trouble.
>
>  t/t7006-pager.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
> index 7fe3367..b9365b4 100755
> --- a/t/t7006-pager.sh
> +++ b/t/t7006-pager.sh
> @@ -40,7 +40,7 @@ test_expect_failure TTY 'pager runs from subdir' '
>  test_expect_success TTY 'LESS and LV envvars are set for pagination' '
>  	(
>  		sane_unset LESS LV &&
> -		PAGER="env >pager-env.out" &&
> +		PAGER="env >pager-env.out; wc" &&
>  		export PAGER &&
>  
>  		test_terminal git log