2 # exercise nl functionality
4 # Copyright (C) 2002-2024 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>.
19 .
"${srcdir=.}/tests/init.sh"; path_prepend_ .
/src
23 echo a |
nl > out || fail
=1
24 echo b |
nl -s%n
>> out || fail
=1
25 echo c |
nl -n ln >> out || fail
=1
26 echo d |
nl -n rn
>> out || fail
=1
27 echo e |
nl -n rz
>> out || fail
=1
29 printf 'a\n\n' |
nl > t || fail
=1; cat -A t
>> out
40 compare exp out || fail
=1
42 # Ensure numbering reset at each delimiter.
43 # coreutils <= v8.25 only reset at a page header.
44 printf '%s\n' '\:\:\:' a
'\:\:' b
'\:' c
> in.txt || framework_failure_
45 nl -ha -fa in.txt
> out.tmp || fail
=1
46 nl -p -ha -fa in.txt
>> out.tmp || fail
=1
47 sed '/^$/d' < out.tmp
> out || framework_failure_
56 compare exp out || fail
=1
58 # Ensure we only indicate overflow when needing to output overflowed numbers
59 returns_
1 nl -v$INTMAX_OFLOW /dev
/null || fail
=1
60 printf '%s\n' a
\\:\\: b
> in.txt || framework_failure_
61 nl -v$INTMAX_MAX in.txt
> out || fail
=1
67 compare exp out || fail
=1
68 returns_
1 nl -p -v$INTMAX_MAX in.txt
> out || fail
=1
70 # Test negative iteration
71 returns_
1 nl -i$INTMAX_UFLOW /dev
/null || fail
=1
72 printf '%s\n' a b
> in.txt || framework_failure_
73 nl -v$INTMAX_MAX -i$INTMAX_MIN in.txt
> out || fail
=1
78 compare exp out || fail
=1
79 printf '%s\n' a b c
> in.txt || framework_failure_
80 returns_
1 nl -v$INTMAX_MAX -i$INTMAX_MIN in.txt
> out || fail
=1
82 # Test GNU extension to --section-delimiter, of disabling section matching
83 printf '%s\n' a
'\:\:' c
> in.txt || framework_failure_
84 nl -d '' in.txt
> out || fail
=1
90 compare exp out || fail
=1
92 # Test GNU extension to --section-delimiter, of supporting strings longer than 2
93 printf '%s\n' a foofoo c
> in.txt || framework_failure_
94 nl -d 'foo' in.txt
> out || fail
=1
100 compare exp out || fail
=1
102 # Ensure single char delimiters assume a following ':' character (as per POSIX)
103 # coreutils <= v8.32 didn't match single char delimiters at all
104 printf '%s\n' a x
:x
: c
> in.txt || framework_failure_
105 nl -d 'x' in.txt
> out || fail
=1
111 compare exp out || fail
=1