Subject: Re: [PATCH v3] tap: new `--stderr-prefix' option to prefix test script's stderr

From: Karl Berry <[email-masked]>
Date: Wed, 19 Feb 2025 10:47:33 -0700

Hi Richard and all,

    Attached is v3 of the patch series.  Changes from v2:

Thanks so much for your careful work. I read through the changes and
nothing problematic jumped out at me.

(Trivial: I think it's conventional for us to use test instead of [,
even when we're assuming a modern shell. I'll tweak that after.)

However ... when I ran make check with the changes installed, the
tap-merge-stdout-stderr test failed. Did it succeed for you? Before I
delved into it, thought I'd check back. Below is the log I got. (I'm
running on Rocky Linux 9, x86_64-linux, though I doubt that matters.)

Thanks again,
Karl

am-test-lib.sh: Running from installcheck: no
am-test-lib.sh: Test Protocol: none
am-test-lib.sh: PATH = /u/karl/gnu/src/akarl/bin:/u/karl/gnu/src/akarl/t/ax:.:/u/karl/bin:/l/bin:/u/texlive/karl/Master/bin/x86_64-linux:/usr/local/gnu/emacs-21.4r9/bin:/usr/local/gnu/bin:/usr/local/bin:/usr/bin:/usr/sbin:/r/tug/home/tubprod/svn/misc:/u/texlive/karl/Master/tlpkg/bin:/r/tug/home/karl/bin
++ pwd
/u/karl/gnu/src/akarl/t/tap-merge-stdout-stderr.dir
+ fetch_tap_driver
+ AM_TAP_AWK=gawk
+ export AM_TAP_AWK
+ get_shell_script tap-driver.sh tap-driver
+ am_source=tap-driver.sh
+ am_target=tap-driver
+ test '!' -f tap-driver
+ test x = xyes
+ cp -f /u/karl/gnu/src/akarl/lib/tap-driver.sh tap-driver
+ sed 10q tap-driver
#! /bin/sh
# Copyright (C) 2011-2025 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
+ unset am_target am_source
+ cat
+ . tap-setup.sh
++ test -f ../../bin/automake
++ test -f ../../runtest
++ test -d ../../t
++ test '!' -f Makefile.am
++ mv Makefile.am Makefile.am~
++ test -d ../tap-common-setup.dir
++ cp -fpR ../tap-common-setup.dir/Makefile ../tap-common-setup.dir/Makefile.am ../tap-common-setup.dir/Makefile.in ../tap-common-setup.dir/aclocal.m4 ../tap-common-setup.dir/compile ../tap-common-setup.dir/config.log ../tap-common-setup.dir/config.status ../tap-common-setup.dir/configure ../tap-common-setup.dir/configure.ac ../tap-common-setup.dir/depcomp ../tap-common-setup.dir/install-sh ../tap-common-setup.dir/missing .
++ fetch_tap_driver
++ AM_TAP_AWK=gawk
++ export AM_TAP_AWK
++ get_shell_script tap-driver.sh tap-driver
++ am_source=tap-driver.sh
++ am_target=tap-driver
++ test '!' -f tap-driver
++ rm -f tap-driver
++ test x = xyes
++ cp -f /u/karl/gnu/src/akarl/lib/tap-driver.sh tap-driver
++ sed 10q tap-driver
#! /bin/sh
# Copyright (C) 2011-2025 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
++ unset am_target am_source
++ test -f Makefile.am~
++ mv -f Makefile.am~ Makefile.am
++ echo 'TEST_LOG_DRIVER = $(srcdir)/tap-driver'
++ automake-1.17 --foreign -Werror -Wall Makefile
++ ./config.status Makefile
config.status: creating Makefile
++ :
+ cat
+ chmod a+x all.test
+ run_make -O check
+ am__make_redirect_stdout=no
+ am__make_redirect_stderr=no
+ am__make_redirect_stdall=no
+ am__make_flags=
+ am__make_rc_exp=0
+ am_make_rc=0
+ test 2 -gt 0
+ case $1 in
+ am__make_redirect_stdout=yes
+ shift
+ test 1 -gt 0
+ case $1 in
+ break
+ using_gmake
+ case $am__using_gmake in
+ make --version -v
+ grep GNU
GNU Make 4.4.1
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
+ am__using_gmake=yes
+ return 0
+ :
+ test x '!=' x
+ : exec make check
+ set +x
make[2]: *** [Makefile:492: test-suite.log] Error 1
make[1]: *** [Makefile:627: check-TESTS] Error 2
make: *** [Makefile:823: check-am] Error 2
+ am_make_rc=2
+ test 2 -eq 253
+ test no = yes
+ test yes = yes
+ cat stdout
make  check-TESTS
make[1]: Entering directory '/u/karl/gnu/src/akarl/t/tap-merge-stdout-stderr.dir'
make[2]: Entering directory '/u/karl/gnu/src/akarl/t/tap-merge-stdout-stderr.dir'
ERROR: all.test 2 # OUT-OF-ORDER (expecting 1)
ERROR: all.test 4 # OUT-OF-ORDER (expecting 2)
ERROR: all.test 1 # OUT-OF-ORDER (expecting 3)
ERROR: all.test 3 # OUT-OF-ORDER (expecting 4)
# all.test: foo foo foo
============================================================================
Testsuite summary for tap-common-setup 1.0
============================================================================
# TOTAL: 4
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 4
============================================================================
See ./test-suite.log for debugging.
============================================================================
make[2]: Leaving directory '/u/karl/gnu/src/akarl/t/tap-merge-stdout-stderr.dir'
make[1]: Leaving directory '/u/karl/gnu/src/akarl/t/tap-merge-stdout-stderr.dir'
+ test no = yes
+ case $am__make_rc_exp in
+ test 0 -ge 0
+ test 0 -le 255
+ test 2 -eq 0
+ return 1
+ am_exit_trap 1
+ exit_status=1
+ set +e
+ cd /u/karl/gnu/src/akarl
+ test none = tap
+ case $am_explicit_skips in
+ test 1 -eq 0
+ keep_testdirs=yes
+ am_keeping_testdirs
+ case $keep_testdirs in
+ return 0
+ set +x
FAIL t/tap-merge-stdout-stderr.sh (exit status: 1)