Subject: Re: [PATCH v3 11/12] t9902: fix use of `read` with `set -e`

From: Junio C Hamano <[email-masked]>
Date: Thu, 16 Apr 2026 13:42:26 -0700

SZEDER Gábor <[email-masked]> writes:

> On Thu, Apr 16, 2026 at 01:19:28PM +0200, Patrick Steinhardt wrote:
>> In t9902 we're using the `read` builtin to read some values into a
>> variable. This is done by using `-d ""`, which cause us to read until
>> the end of the heredoc. There is a gotcha though: when the delimiter
>> isn't found at all, then the read builtin will return an error.
>
> The absence of the delimiter doesn't make "read" return an error, EOF
> does (that's why a "while read ..." loop works).

Very true.  So for this kind of "read", failing is the norm.

> So AFAICT what this "read" does is equivalent to:
>
> refs='main
> maint
> next
> seen'
>
> Isn't this much easier to read!?  OK, the first ref is not aligned
> with the rest...  But I admit I had to look up the docs to see what
> the empty string as delimiter actually does, and even after that I had
> to add a printf '>%s<\n' "$refs" command to the test script to see
> what's exactly going on.

Yes, whether "set -e" is used or not, not using "read" there makes a
lot more sense.