Subject: bug#62542: coreutils-9.2: Failing tests on Adélie Linux

From: "A. Wilcox" <[email-masked]>
Date: Fri, 31 Mar 2023 01:27:54 -0500

On Mar 30, 2023, at 9:48 AM, Pádraig Brady <[email-masked]> wrote:
> 
> On 30/03/2023 09:20, A. Wilcox wrote:
>> Hello,
>> While updating coreutils to 9.2 on Adélie Linux, I’ve run into a few
>> interesting corner-cases in the test suite.  As a note, our distribution
>> is using musl as the libc.
>> 1. `tests/misc/csplit-heap.sh` fails when /bin/sh is Bash
>> I actually saw this on 9.1 as well, but I only saw it on one system and
>> considered it a fluke since our auto builder infrastructure didn’t see
>> the issue.  Seeing it again in 9.2 made me look deeper, and it turns out
>> that when /bin/sh is a symlink to /bin/bash, the test fails with:
>> ./tests/misc/csplit-heap.sh: xmalloc: cannot allocate 16085 bytes
>> When /bin/sh is a symlink to /bin/dash, the test no longer fails.
>> However:
> 
> The attached should fix that issue.

Confirmed, this patch fixed it - thank you!

> 
>> 2. `tests/misc/tee.sh` fails when /bin/sh is Dash and `make` is run
>> under Zsh
>> When running the test suite from my default Zsh environment, and when
>> /bin/sh is a symlink to /bin/dash, I receive an error when running the
>> tee test.
>> If:
>> - /bin/sh is a symlink to /bin/bash; OR if
>> - /bin/sh is a symlink to /bin/dash, and
>> - make is launched from a Bash or Dash shell, *not* a Zsh shell,
>> Then the test passes.
> 
> This is failing as `yes >fifo` is getting EINTR on your shell.
> I'm not too sure why that's happening, but it might be
> due to interactions on the fifo from the previous part of the test.
> 
> Does the following change avoid the problem for you?
> 
> cheers,
> Pádraig
> 
> diff --git a/tests/misc/tee.sh b/tests/misc/tee.sh
> index 0b97a9ea3..444cb688a 100755
> --- a/tests/misc/tee.sh
> +++ b/tests/misc/tee.sh
> @@ -99,7 +99,7 @@ dd count=20 bs=100K if=/dev/zero status=none |
>   dd count=0 oflag=nonblock status=none
>   tee || { cleanup_; touch tee.fail; }
> } >fifo
> -test -f tee.fail && fail=1
> +test -f tee.fail && fail=1 || cleanup_
> 
> # Ensure tee honors --output-error modes
> read_fifo() { timeout 10 dd count=1 if=fifo of=/dev/null status=none & }

This also fixed the Zsh issue, indeed.

Best,
-A.