git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] progress.c tests: fix breakage with COLUMNS != 80

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Jun 24, 2021, 05:12 UTC
Message-ID
<20210624051253.GG6312@szeder.dev>
In-Reply-To
<YNPISWEBxISC30DW@coredump.intra.peff.net>
On Wed, Jun 23, 2021 at 07:48:25PM -0400, Jeff King wrote:
Show 25 quoted lines
> On Mon, Jun 21, 2021 at 09:01:23AM +0200, Ævar Arnfjörð Bjarmason wrote:
> 
> > The tests added in 2bb74b53a49 (Test the progress display, 2019-09-16)
> > broke under anything except COLUMNS=80, i.e. when running them under
> > the "-v" mode under a differently sized terminal.
> > 
> > Let's set the expected number of COLUMNS at the start of the test to
> > fix that bug. It's handy not do do this in test-progress.c itself, in
> > case we'd like to test for a different number of COLUMNS, either
> > manually or in a future test.
> 
> Hmm. So I can easily reproduce the problem here, and your patch fixes
> it. But my first thought was: shouldn't test-lib.sh be handling this to
> give all of the scripts a uniform environment?
> 
> And indeed, we _do_ unset COLUMNS there. So I think the problem isn't
> a bad setting of $COLUMNS, but rather that in "-v" mode, the
> sub-command's stderr is hooked to our tty, and term_columns() is smart
> enough to use TIOCGWINSZ to get the value (at least on some platforms).
> 
> Setting $COLUMNS again in the environment fixes it, because we prefer
> that value to trying the ioctl.
> 
> So I don't think what you have here is wrong (though the commit message
> is a little misleading).

It is misleading indeed and needs to be updated. I did my own analysis and arrived to the same conclusions wrt COLUMNS being unset vs. the ioctl() and stderr being a tty.

Show 7 quoted lines
> But it seems like the original intent of our
> "unset COLUMNS" in test-lib.sh would best be fulfilled by setting it to
> a known value there (like 80), rather than unsetting it.
> 
> I admit this a _bit_ of a nitpick (since as far as we know none of the
> other scripts care about the terminal width), so I'm OK with this as-is
> if you feel strongly the other way.

I remember one commit-graph test that does check the number of lines in the progress output, assuming one progress line per commit-graph layer, which breaks when we break the progress line in a too narrow terminal. Running './t5324-split-commit-graph.sh -v -i' in a 46 column wide terminal fails for me, but succeeds with 47 columns.

I do suggest setting COLUMNS=80 in 'test-lib.sh'.
Previous: Jeff KingNext: Jeff King
Message 3 of 10 in “progress.c tests: fix breakage with COLUMNS != 80”
  1. progress.c tests: fix breakage with COLUMNS != 80Ævar Arnfjörð Bjarmason, Jun 21, 2021
  2. Jeff KingJun 23, 2021
  3. SZEDER GáborJun 24, 2021
  4. Jeff KingJun 24, 2021
  5. Philip OakleyJun 24, 2021
  6. test-lib.sh: set COLUMNS=80 for --verbose repeatabilityÆvar Arnfjörð Bjarmason, Jun 24, 2021
  7. Jeff KingJun 24, 2021
  8. SZEDER GáborJun 27, 2021
  9. Junio C HamanoJun 29, 2021
  10. test-lib.sh: set COLUMNS=80 for --verbose repeatabilityÆvar Arnfjörð Bjarmason, Jun 29, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.