Subject: RE: [Test Breakage 2.46.0-rc0] Test t4135.06 fails on NonStop

From: <[email-masked]>
Date: Sun, 14 Jul 2024 09:36:41 -0400

On Sunday, July 14, 2024 3:06 Am, Peff wrote:
>To: Junio C Hamano <[email-masked]>
>Cc: [email-masked]; [email-masked]
>Subject: Re: [Test Breakage 2.46.0-rc0] Test t4135.06 fails on NonStop
>
>On Sat, Jul 13, 2024 at 07:23:25PM -0700, Junio C Hamano wrote:
>
>> And this hunk uses /dev/zero the same way before and after.  The older
>> use of /dev/zero in these tests were from 852a1710 (am: let
>> command-line options override saved options, 2015-08-04), which was
>> part of v2.6.0 that was tagged in late Sep 2015.
>>
>> In short this is nothing new in this release.
>
>One thing my recent patch did was remove the TTY prereq from those tests. So it's
>possible that they're now being run on his platform for the first time.

Good catch. That was it. From the prior CI build:
*** t4153-am-resume-override-opts.sh ***
ok 1 - setup
ok 2 # skip --3way overrides --no-3way (missing TTY)
ok 3 - --no-quiet overrides --quiet
ok 4 - --signoff overrides --no-signoff
ok 5 # skip --reject overrides --no-reject (missing TTY)

>> Preparing a garbage file that is sufficiently large (like 1kB) and
>> feeding from that file to the commands instead of from /dev/null may
>> be sufficient to reduce the dependence of /dev/zero but given that
>> this is ancient, there are many other uses of /dev/zero in the test
>> directory, it does not seem ultra-urgent to address this, at least to
>> me.  Certainly not during the pre-release freeze.
>
>The other mentions of /dev/zero that I see are all in tests marked as EXPENSIVE,
>which likewise aren't run normally.
>
>So I think it is plausibly a new issue for some platforms, though I agree it is not super
>urgent.
>
>With --retry I think we would not actually read stdin at all, so we could just remove
>the mention of /dev/zero entirely. But if we wanted to be sure it did not read and
>choke on any input provided, I think just:
>
>diff --git a/t/t4153-am-resume-override-opts.sh b/t/t4153-am-resume-override-
>opts.sh
>index a4d0c03ca6..76783bdd67 100755
>--- a/t/t4153-am-resume-override-opts.sh
>+++ b/t/t4153-am-resume-override-opts.sh
>@@ -45,6 +45,7 @@ test_expect_success '--3way overrides --no-3way' '
>
> 	# Applying side1 with am --3way will succeed due to the threeway-merge.
> 	# Applying side2 will fail as --3way does not apply to it.
>+	echo garbage |
> 	test_must_fail git am --retry --3way &&
> 	test_path_is_dir .git/rebase-apply &&
> 	test side1 = "$(cat file2)"
>@@ -99,7 +100,8 @@ test_expect_success '--reject overrides --no-reject' '
> 	test_path_is_dir .git/rebase-apply &&
> 	test_path_is_missing file.rej &&
>
>-	test_must_fail git am --retry --reject </dev/zero &&
>+	echo garbage |
>+	test_must_fail git am --retry --reject &&
> 	test_path_is_dir .git/rebase-apply &&
> 	test_path_is_file file.rej
> '
>
>would be sufficient.

And it does work properly on the box. Thanks.
ok 1 - setup
ok 2 - --retry fails without in-progress operation
ok 3 - --3way overrides --no-3way
ok 4 - --no-quiet overrides --quiet
ok 5 - --signoff overrides --no-signoff
ok 6 - --reject overrides --no-reject
# passed all 6 test(s)
1..6

Thanks,
Randall