diff options
Diffstat (limited to 'tmac/tests/an_FT-bad-value-should-not-trash-titles.sh')
-rwxr-xr-x | tmac/tests/an_FT-bad-value-should-not-trash-titles.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tmac/tests/an_FT-bad-value-should-not-trash-titles.sh b/tmac/tests/an_FT-bad-value-should-not-trash-titles.sh new file mode 100755 index 0000000..e14109f --- /dev/null +++ b/tmac/tests/an_FT-bad-value-should-not-trash-titles.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# Copyright (C) 2021 Free Software Foundation, Inc. +# +# This file is part of groff. +# +# groff 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 3 of the License, or +# (at your option) any later version. +# +# groff is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +groff="${abs_top_builddir:-.}/test-groff" + +# Regression-test Savannah #60612. +# +# Bad values of FT should not trash headers and footers. +EXAMPLE_PAGE_1='.TH foo 1 2021-05-17 "groff foo test" +.SH Name +foo \- frobnicate bits' + +EXAMPLE_PAGE_2='.TH bar 1 2021-05-17 "groff bar test" +.SH Name +bar \- what they say north of Macedonia' + +# We turn off continuous rendering (-rcR=0) so that FT influences where the page +# footer is output. +INPUT=$(printf "%s\n" \ + "$EXAMPLE_PAGE_1" \ + "$EXAMPLE_PAGE_2" \ +) + +# FT tells our man(7) where to write the page footer. +# +# -0.5i is the default and should always work. +# +# 0 (in any units) is not sane. It would step on ("hide") the header trap among +# other problems. +# +# 0.5i (positive) is a likely input from a confused user (I've done it). +# +# "Reasonable" positive values are conceivable but there may not be any user +# demand for them. ("Always break for the footer at 3i [or 3c] regardless of +# the page length"?) +# +# Somewhere between -0.51v (bad) and -0.55v (okay) a problem gets caused. +# +# Traps that aren't in the page area (-20i, 500c for conventional paper sizes) +# don't get sprung. + +for FT in -0.5i -1i 0i 0.5i -0.51v -0.55v 10i -20i +do + OUTPUT=$(echo "$INPUT" | "$groff" -Tascii -P-cbou -man -rcR=0 -rFT=$FT) + FAIL= + + if ! echo "$OUTPUT" | grep -qE 'foo\(1\) +General Commands Manual +foo\(1\)' + then + FAIL=yes + echo "first page header test failed (FT=$FT)" >&2 + fi + + if ! echo "$OUTPUT" | grep -qE 'groff foo test +2021-05-17 +1' + then + FAIL=yes + echo "first page footer test failed (FT=$FT)" >&2 + fi + + if ! echo "$OUTPUT" | grep -qE 'bar\(1\) +General Commands Manual +bar\(1\)' + then + FAIL=yes + echo "second page header test failed (FT=$FT)" >&2 + fi + + test -z "$FAIL" + + if ! echo "$OUTPUT" | grep -qE 'groff bar test +2021-05-17 +1' + then + FAIL=yes + echo "second page footer test failed (FT=$FT)" >&2 + fi +done + +test -z "$FAIL" + +# vim:set ai et sw=4 ts=4 tw=80: |