On Mon, Jul 20, 2026 at 03:58:08PM +0200, Bruno Haible via Bug reports for the 
GNU Texinfo documentation system wrote:
> On Solaris 11.4, today's CI run reports a new test failure:
> 
> FAIL: t/quoted-index-target.sh
> 
> I reproduce it locally in a Solaris 11.4 VM. Find attached the
> info/test-suite.log file.

Thanks for keeping an eye on this.  It is no surprise that the use of
a "character class" ("[:cntrl:]") in the grep regex caused a problem in
this recently introduced test (assuming that's the problem).

I did try to research whether this usage would be portable when this
test was first added, on 11 July.  :cntrl: is in the POSIX standard
for Basic Regular Expression (*).  I checked the autoconf manual (**)
and GNU grep manual (***) also, but didn't see anything wrong.

(*) 
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05
(**) 
https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.73/html_node/Limitations-of-Usual-Tools.html
(***) 
https://www.gnu.org/software/grep/manual/html_node/Problematic-Expressions.html#Problematic-Expressions

The online Solaris documentation I could find (+)(++) does document :cntrl:.

(+) https://docs.oracle.com/cd/E88353_01/html/E37839/grep-1.html
(++) 
https://docs.oracle.com/cd/E88353_01/html/E37853/regex-7.html#REFMAN7regex-7

Well, when I managed to find a Solaris system to log into, its grep didn't
seem to recognise character classes at all.

gavin@s11-sparc:~$ uname -a
SunOS s11-sparc.cfarm 5.11 11.4.93.221.2 sun4v sparc sun4v logical-domain

The "grep" man page there refers to a "regexp(7)" page:

   /usr/bin/grep
       The /usr/bin/grep utility uses limited regular expressions  like  those
       described on the regexp(7) manual page to match the patterns.

   /usr/xpg4/bin/grep
       The options -E and -F affect the way /usr/xpg4/bin/grep interprets pat-
       tern_list.  If  -E  is  specified,  /usr/xpg4/bin/grep  interprets pat-
       tern_list as a full regular expression (see -E for description). If  -F
       is  specified,  grep interprets pattern_list as a fixed string. If nei-
       ther are specified, grep interprets pattern_list as a basic regular ex-
       pression as described on regex(7) manual page.

Accessing this with "man -s 7 regexp":

       Regular Expressions  (REs)  provide  a  mechanism  to  select  specific
       strings from a set of character strings. The Simple Regular Expressions
       described  below  differ from the Internationalized Regular Expressions
       described on the regex(7) manual page in the following ways:

           o      only Basic Regular Expressions are supported

           o      the Internationalization features--character class,  equiva-
                  lence  class,  and  multi-character  collation--are not sup-
                  ported.

Indeed:

gavin@s11-sparc:~$  printf 'A\n' | grep '[[:alpha:]]'
gavin@s11-sparc:~$ echo $?
1
gavin@s11-sparc:~$ printf 'A\n' | /usr/xpg4/bin/grep '[[:alpha:]]'
A
gavin@s11-sparc:~$ echo $?
0
gavin@s11-sparc:~$ 

So I suppose we should find some other way to match the DEL character in
the output - or change this test to work differently.  I don't want to
use a raw DEL byte in the test file (as it's hard to type in my text
editor), and there isn't a portable Bourne shell way to escape
a character AFAIK (bash has $'...').

As the autoconf manual says, "POSIX does not specify the behavior of
grep on binary files."  So trying to match the output which may contain
a DEL byte is probably not worth trying to do reliably.

The best idea I have is to delete the DEL bytes before piping
to grep.  I've committed this change today (git commit 8a082ce77d1e0).





> 

> ======================================================
>    GNU Texinfo 7.3.20260720dev: info/test-suite.log
> ======================================================
> 
> # TOTAL: 91
> # PASS:  90
> # SKIP:  0
> # XFAIL: 0
> # FAIL:  1
> # XPASS: 0
> # ERROR: 0
> 
> .. contents:: :depth: 2
> 
> FAIL: t/quoted-index-target.sh
> ==============================
> 
> + ginfo=./ginfo
> + INFOPATH=../../info/t/infodir
> + export INFOPATH
> + HOME=''
> + export HOME
> + XDG_CONFIG_HOME=../../info/t/config
> + export XDG_CONFIG_HOME
> + t=../../info/t
> + export t
> + basename ../../info/t/quoted-index-target.sh.out
> + ginfo_output=t/quoted-index-target.sh.out
> + basename ../../info/t/quoted-index-target.sh.pipein
> + pipein=t/quoted-index-target.sh.pipein
> + basename ../../info/t/quoted-index-target.sh.pipeout
> + pty_type=t/quoted-index-target.sh.pipeout
> + rm -f t/quoted-index-target.sh.out
> + INFO_PRINT_COMMAND='>t/quoted-index-target.sh.out'
> + export INFO_PRINT_COMMAND
> + pty_pid=0
> + LC_ALL=C
> + export LC_ALL
> + TERM=dumb
> + export TERM
> + trap cleanup 2
> + path_sep=:
> + initialization_done=0
> + true 10
> + ./ginfo --file quoting --index-search 'Colon::in, name' --all
> + 1> t/quoted-index-target.sh.out
> info: "../../info/t/config/texinfo/infokey", line 2: unknown action 
> `xxx-not-recognized'
> info: "../../info/t/config/texinfo/infokey", line 3: cannot bind key sequence 
> to menu-digit
> + q='[[:cntrl:]]\{0,1\}'
> + grep '\* Colon::in, name:  *[[:cntrl:]]\{0,1\}Colon::in, 
> name[[:cntrl:]]\{0,1\}.' t/quoted-index-target.sh.out
> + retval=1
> + cleanup
> + test 0 -ne 0
> + rm -f t/quoted-index-target.sh.out
> + rm -f t/quoted-index-target.sh.pipein t/quoted-index-target.sh.pipeout
> + exit 1
> FAIL t/quoted-index-target.sh (exit status: 1)
> 


  • CI f... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Gavin Smith
      • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
        • ... Gavin Smith
          • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system

Reply via email to