groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: groff 1.23.0.rc3 available for testing


From: G. Branden Robinson
Subject: Re: groff 1.23.0.rc3 available for testing
Date: Wed, 22 Feb 2023 04:12:28 -0600

Hi Alexis,

At 2023-02-22T10:22:56+0100, Alexis wrote:
> happy to report that the build succeeds on macOS.
> Running `make check` fails with the following (truncated) output:

Thanks for this report.  It is a bit surprising because John Gardner's
and my builds on macOS report no test failures.

============================================================================
Testsuite summary for GNU roff 1.23.0.rc3
============================================================================
# TOTAL: 159
# PASS:  153
# SKIP:  4
# XFAIL: 2
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
$ uname -a
Darwin gcc104.fsffrance.org 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 
20:20:05 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T8101 arm64

Do you have unusual locale settings, by chance?  This is kind of a shot
in the dark because while they have caused problems before, I can't
provoke any test failures on the above macOS host with LC_ALL=fr_FR or
LC_ALL=zh_CN, or even LC_ALL=INVALID.  (These do cause one additional
test, to be skipped.

SKIP: src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh

> FAIL: src/roff/groff/tests/ab_works.sh
> ======================================

This one is kind of shocking.  It looks like groff is producing output,
but the input should be producing no groff output at all (to the
standard output stream).

Here's the meat of the test.

for d in ascii cp1047 dvi html latin1 lbp lj4 pdf ps utf8
do
  echo "verifying exit status of .ab request using $d device" >&2
  printf '.ab\n' | "$groff" -T$d
  test $? -eq 1 || exit 1
done

echo "verifying empty output of .ab request with no arguments" >&2
OUT=$(printf '.ab\n' | "$groff" -Tascii 2>&1)
test "$OUT" = "" || exit 1

echo "verifying that arguments to .ab request go to stderr" >&2
OUT=$(printf '.ab foo\n' | "$groff" -Tascii 2>&1 > /dev/null)
test "$OUT" = "foo" || exit 1

> verifying exit status of .ab request using ascii device
> grotty:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> verifying exit status of .ab request using cp1047 device
> grotty:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> verifying exit status of .ab request using dvi device
> grodvi:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> �
> verifying exit status of .ab request using latin1 device
> grotty:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> verifying exit status of .ab request using lbp device
> grolbp:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> c;[2&z[7 I[?32h[?33h[714;100;29;0;32;120.}WP54
> grolj4:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> E&u1200D&l2A&l0O&l0Everifying exit status of .ab request using pdf device
> %PDF-1.4
> %����
> 1 0 obj << /Pages 2 0 R 
> /Type /Catalog
> >>
> endobj
> 3 0 obj << /CreationDate (D:19800101010000+01'00')
> /Creator (groff version 1.23.0.rc3)
> /ModDate (D:19800101010000+01'00')
> /Producer (gropdf version 1.23.0.rc3)
> >>
> endobj
> 2 0 obj << /Count 0
> /Kids []
> /MediaBox [0 0 612 792 ]
> /Resources << /Font << >>
> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI ]
> >>
> /Rotate 0
> /Type /Pages
> >>
> endobj
> xref
> 0 4
> 0000000000 65535 f 
> 0000000015 00000 n 
> 0000000235 00000 n 
> 0000000065 00000 n 
> trailer
> <<
> /Info 3 0 R 
> /Root 1 0 R
> /Size 4
> >>
> startxref
> 398
> %%EOF
> verifying exit status of .ab request using ps device
> grops:<standard input>:(<standard input>):6: fatal error: 'V' command invalid 
> before first 'p' command
> verifying exit status of .ab request using utf8 device
> grotty:<standard input>:(<standard input>):6: fatal error: 'V' command 
> invalid before first 'p' command
> verifying empty output of .ab request with no arguments
> FAIL src/roff/groff/tests/ab_works.sh (exit status: 1)
> 
> FAIL: src/roff/groff/tests/handle_special_input_code_points.sh
> ==============================================================

I've never seen this one fail before either.  Could you add

  echo "$output"

just after line 35 and re-run the test?

> checking that input no-break space is mapped to \~
> ...FAILED
> checking that input soft hyphen is mapped to \%
> ...FAILED
> FAIL src/roff/groff/tests/handle_special_input_code_points.sh (exit status: 1)
> 
> FAIL: src/roff/groff/tests/initialization_is_quiet.sh
> =====================================================

This one is telling.  I begin to suspect that you somehow have a
non-stock troffrc file or similar that is producing output
unconditionally.

It could be something as simple as a blank line, or a line that doesn't
look blank, but is.

\"

Like that.

> testing "-m cs"; COMPAT=""
> FAIL src/roff/groff/tests/initialization_is_quiet.sh (exit status: 1)
> 
> FAIL: src/roff/groff/tests/msoquiet_works.sh
> ============================================

That would explain this one, too.

DOC='.msoquiet nonexistent'

OUTPUT=$(echo "$DOC" | "$groff" -Tascii 2>&1)

echo "testing that .msoquiet of nonexistent file produces no warning" \
  >&2
test -z "$OUTPUT"

> FAIL src/roff/groff/tests/msoquiet_works.sh (exit status: 1)
> 
> FAIL: src/roff/groff/tests/soquiet_works.sh
> ===========================================

...and this one.

DOC='.soquiet nonexistent'

OUTPUT=$(echo "$DOC" | "$groff" -Tascii 2>&1)

echo "testing that .soquiet of nonexistent file produces no error" >&2
test -z "$OUTPUT"

> FAIL src/roff/groff/tests/soquiet_works.sh (exit status: 1)
> 
> FAIL: tmac/tests/an-ext_MR-works.sh
> ===================================

echo "$output"

after line 39 would be helpful here, too.

If there _is_ spurious output from a rogue troffrc file, that would
throw off the line numbers used to compare against the output in this
test.

> checking for correct man page topic font style
> ...FAILED
> ...FAILED
> checking for correct man page section font style
> ...FAILED
> ...FAILED
> FAIL tmac/tests/an-ext_MR-works.sh (exit status: 1)
> 
> FAIL: tmac/tests/an_MR-works.sh
> ===============================

This one also relies upon stable line numbers.

> checking for opening 'link' device control command
> FAIL tmac/tests/an_MR-works.sh (exit status: 1)
> 
> FAIL: tmac/tests/an_font-remapping-does-not-affect-titles.sh
> ============================================================
> 
> 
> 
> 
> foo(1)                      General Commands Manual                  
>    foo(1)

Hmmm, there should be only three blank lines at the top of a man(7)
document formatted for an nroff device without continuous rendering.

I count four above.  My nose for stray blank lines is twitching more.

> 
> 
> Name
>        foo - a command with a very short name
> groff test suite                  2021-10-04                                 2
[...]
>      1        x T ascii
>      2        x res 240 24 40
>      3        x init
>      4        x F -
>      5        p1
>      6        x font 2 I
>      7        f2
>      8        s10
>      9        V160
>     10        H0
>     11        md
>     12        DFd
>     13        tfoo
>     14        x font 1 R
>     15        f1
>     16        t(1)

My output looks like this:

     1  x T ascii
     2  x res 240 24 40
     3  x init
     4  p1
     5  x font 2 I
     6  f2
     7  s10
     8  V160
     9  H0
    10  md
    11  DFd
    12  tfoo
    13  x font 1 R
    14  f1
    15  t(1)

The difference is that your output has this:

>      4        x F -

What _is_ that?  Some kind of extended "ditroff" command.

    xF name<line-break>
        (Filename control command)
        Use name as the intended name for the current file in error
        reports.  This is useful for remembering the original file name
        when groff uses an internal piping mechanism.  The input file is
        not changed by this command.  This command is a groff extension.

That's...really odd.  Maybe the stray line is

  .lf -

?

Or your macOS system is using pipes where mine isn't (?!).

I don't have good guesses here.

Anyway, the line numbers in the groff intermediate output format are
thrown off by this, so that suffices to explain the test failure.
(There may be other problems.)

>     17        h528
[...]
>    138        x stop
> FAIL tmac/tests/an_font-remapping-does-not-affect-titles.sh (exit status: 1)

I was pleased with myself for root-causing a couple of test failures on
Solaris today...my reward would appear to be more challenging puzzles.

Here's another thing you can do to rule out initialization files causing
spurious output.  You have to run troff directly, without groff, and
without its startup files.  Change to your build directory.

$ echo .ab | ./troff -F ./font -F ../font -R || echo nonzero exit status

The foregoing is what I have to do because I do an out-of-tree build in
a subdirectory of the source tree.  If you do an in-tree build, you
don't need the "-F ../font" option.  If you have an out-of-tree build in
an exotic place, then what you need to know is that you must have -F
options (or $GROFF_FONT_PATH elements) in both the source and build
directories.

That experiment should produce "nonzero exit status" and _no_ other
output.

Then run it again without '-R'.

If there is a difference, we have narrowed down the problem to
initialization files.

Please let me know what you find.

Regards,
Branden

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]