Re: [PATCH v5 0/2] hook API: connect hooks to the TTY again, fixes a v2.36.0 regression
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Jun 3, 2022, 09:20 UTC
- Message-ID
- <220603.86o7zaxfhf.gmgdl@evledraar.gmail.com>
- In-Reply-To
- <6e98dfe9-5df2-caab-ed3a-81f07b0bb6bc@gmail.com>
On Fri, Jun 03 2022, Phillip Wood wrote:
Show 28 quoted lines
> Hi Ævar > > On 02/06/2022 15:07, Ævar Arnfjörð Bjarmason wrote: >> This series fixes a v2.36.0 regression[1]. See [2] for the v4. The >> reasons for why a regression needs this relatively large change to >> move forward is discussed in past rounds, e.g. around [3]. CI at >> https://github.com/avar/git/actions/runs/2428475773 >> Changes since v4, mainly to address comments by Johannes (thanks for >> the review!): >> * First, some things like renaming "ungroup" to something else & >> rewriting the tests I didn't do because I thought keeping the >> inter/range-diff down in size outweighed re-arranging or changing >> the code at this late stage. >> In the case of the suggested shorter test in >> https://lore.kernel.org/git/nycvar.QRO.7.76.6.2206011827300.349@tvgsbejvaqbjf.bet/ >> the replacement wasn't testing the same thing. I.e. we don't see >> what's connected to a TTY if we redirect one of stdout or stderr >> anymore, which is important to get right. > > I'm a bit confused by this, the proposed test uses this hook script > > write_script .git/hooks/pre-commit <<-EOF > test -t 1 && echo "stdout is a TTY" >out > test -t 2 && echo "stderr is a TTY" >>out > EOF > > if either of stderr or stdout is redirected then the corresponding > "test -t" should fail and so we will detect that it is not a tty.
Yes, exactly, but the proposed test doesn't test that, in that case both of them are connected, the test in 2/2 does test that case.
Can that snippet bebe made to work? Sure, but I know the test I have works, and that proposed replacement didn't even pass chainlint (i.e. hasn't been run even once in our test suite). So I didn't think that trying to micro-optimize the test length was worth it in this case.
It's also getting much of that length reduction e.g. by not cleaning up after itself, which the test in 2/2 does.