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

From: Junio C Hamano <[email-masked]>
Date: Sat, 13 Jul 2024 19:23:25 -0700

<[email-masked]> writes:

> Here is the breakage. This looks like a non-portable dependency on /dev/zero
> was introduced.
>
> expecting success of 4153.6 '--reject overrides --no-reject':
>         rm -fr .git/rebase-apply &&
>         git reset --hard &&
>         git checkout first &&
>         rm -f file.rej &&
>
>         test_must_fail git am --no-reject side1.eml &&
>         test_path_is_dir .git/rebase-apply &&
>         test_path_is_missing file.rej &&
>
>         test_must_fail git am --retry --reject </dev/zero &&
>         test_path_is_dir .git/rebase-apply &&
>         test_path_is_file file.rej

I think you are blaming 53ce2e3f (am: add explicit "--retry" option,
2024-06-06), but /dev/zero was in use before that commit.

        diff --git a/t/t4153-am-resume-override-opts.sh b/t/t4153-am-resume-override-opts.sh
        ...
        @@ -40,7 +44,7 @@ test_expect_success TTY '--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.
        -	test_must_fail test_terminal git am --3way </dev/zero &&
        +	test_must_fail git am --retry --3way &&
                test_path_is_dir .git/rebase-apply &&
                test side1 = "$(cat file2)"
         '

In this hunk, use of /dev/zero goes away; if /dev/zero were a
problem, you would have been failing this test already.

        @@ -94,7 +98,7 @@ test_expect_success TTY '--reject overrides --no-reject' '
                test_path_is_dir .git/rebase-apply &&
                test_path_is_missing file.rej &&

        -	test_must_fail test_terminal git am --reject </dev/zero &&
        +	test_must_fail git am --retry --reject </dev/zero &&
                test_path_is_dir .git/rebase-apply &&
                test_path_is_file file.rej
         '

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.

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.

Thanks for a report.