Re: progress test failure on fedora34
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-07-18 08:08:28
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Wed, Jul 14 2021, Alex Henrie wrote:
On Wed, Jul 14, 2021 at 9:39 AM Ævar Arnfjörð Bjarmason [off-list ref] wrote:quoted
On Wed, Jul 14 2021, Fabian Stelzer wrote:quoted
Hi, The test t0500-progress-display.sh in current master fails on latest fedora34. The break was introduced with: 83ae1edff7ee0b7674bd556955d2cf1706bddb21 ab/fix-columns-to-80-during-tests (2021-06-29) 1 commit Kind regards, FabianI have not been able to reproduce this, it seems the below E-Mail was word-wrapped by your mailer, which is especially bad here since getting to the bottom of this requires looking at the whitespace. Is there a way you could tar that up and send it (to me personally is fine, or some pastebin or whatever). I am able to reproduce something that looks like this if I s/COLUMNS=80/COLUMNS=79/g in the test-lib, but given that we set it to 80, and that the progress.c code just ends up with an atoi(getenv("COLUMNS")), and we do our own wrapping (with no other fancy logic) in progress.c, I'm not seeing right now how this could happen...This test also fails for me when using QTerminal or Konsole, but it passes on XTerm and LXTerminal.
I tried this on Debian 11 with QTerminal 0.16.1 and can't reproduce it, resized the window etc., always get COLUMNS=80 if I add some printf debugging. Do you mind testing with an ad-hoc patch like this on top? It will fail right away, but should say COLUMNS = 80 in the output. The only thing I can think of right now is that some terminals are doing some evil trickery to LD_PRELOAD or whatever and intercept getenv() for COLUMNS and the like, but that's an entirely unfounded hunch.
diff --git a/progress.c b/progress.c
index 680c6a8bf9..dca254b515 100644
--- a/progress.c
+++ b/progress.c@@ -144,6 +144,7 @@ static void display(struct progress *progress, uint64_t n, const char *done) size_t progress_line_len = progress->title_len + counters_sb->len + 2; int cols = term_columns(); + fprintf(stderr, "cols = %d\n", cols); if (progress->split) { fprintf(stderr, " %s%*s", counters_sb->buf,