xref: /aosp_15_r20/external/toybox/tests/man.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash
2*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2019 makepost <[email protected]>
3*cf5a6c84SAndroid Build Coastguard Worker
4*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh
5*cf5a6c84SAndroid Build Coastguard Worker
6*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin"
7*cf5a6c84SAndroid Build Coastguard Worker
8*cf5a6c84SAndroid Build Coastguard Workermkdir -p banana/man{1,3,5}
9*cf5a6c84SAndroid Build Coastguard Worker
10*cf5a6c84SAndroid Build Coastguard Worker# Can't/shouldn't write to /usr/share/man so use -M to change path
11*cf5a6c84SAndroid Build Coastguard WorkerMAN="man -M banana"
12*cf5a6c84SAndroid Build Coastguard Workerecho one | bzip2 >banana/man1/numbers.1.bz2
13*cf5a6c84SAndroid Build Coastguard Workerecho three | gzip >banana/man3/numbers.3.gz
14*cf5a6c84SAndroid Build Coastguard Workerecho five > banana/man5/numbers.5
15*cf5a6c84SAndroid Build Coastguard Worker
16*cf5a6c84SAndroid Build Coastguard Workertesting "man" "$MAN numbers" " one\n\n" "" ""
17*cf5a6c84SAndroid Build Coastguard Workertesting "man.section" "$MAN numbers.3" " three\n\n" "" ""
18*cf5a6c84SAndroid Build Coastguard Workertesting "section man" "$MAN 5 numbers" " five\n\n" "" ""
19*cf5a6c84SAndroid Build Coastguard Workertesting "/" "$MAN /" "" "" "" # Regression guard for !suf in zopen
20*cf5a6c84SAndroid Build Coastguard Worker
21*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
22*cf5a6c84SAndroid Build Coastguard Worker.TP
23*cf5a6c84SAndroid Build Coastguard Worker.PD 0
24*cf5a6c84SAndroid Build Coastguard Worker.B \\-F
25*cf5a6c84SAndroid Build Coastguard Worker.TP
26*cf5a6c84SAndroid Build Coastguard Worker.PD
27*cf5a6c84SAndroid Build Coastguard Worker.B \\-\\^\\-foo\\-bar
28*cf5a6c84SAndroid Build Coastguard WorkerDoes something.
29*cf5a6c84SAndroid Build Coastguard Worker.TP
30*cf5a6c84SAndroid Build Coastguard Worker.PD 0
31*cf5a6c84SAndroid Build Coastguard Worker.B \\-\\-no\\-alias
32*cf5a6c84SAndroid Build Coastguard WorkerHas no alias.
33*cf5a6c84SAndroid Build Coastguard WorkerEOF
34*cf5a6c84SAndroid Build Coastguard Worker
35*cf5a6c84SAndroid Build Coastguard Workertesting "gawk alias" "$MAN toybox" " -F\n --foo-bar Does something.\n\n --no-alias Has no alias.\n\n" "" ""
36*cf5a6c84SAndroid Build Coastguard Worker
37*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
38*cf5a6c84SAndroid Build Coastguard Worker\\fBsh\\fR-compatible
39*cf5a6c84SAndroid Build Coastguard Worker\\fIKorn\\fP
40*cf5a6c84SAndroid Build Coastguard WorkerEOF
41*cf5a6c84SAndroid Build Coastguard Workertesting "bash bold,ita" "$MAN toybox" " sh-compatible Korn\n\n" "" ""
42*cf5a6c84SAndroid Build Coastguard Worker
43*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
44*cf5a6c84SAndroid Build Coastguard Workerquoted \\(aqstring\\(aq
45*cf5a6c84SAndroid Build Coastguard Worker\\(dqserver\\(dq
46*cf5a6c84SAndroid Build Coastguard WorkerDon\\(cq\\&t
47*cf5a6c84SAndroid Build Coastguard WorkerEOF
48*cf5a6c84SAndroid Build Coastguard Workertesting "bash,rsync quote" "$MAN toybox" " quoted 'string' \"server\" Don't\n\n" "" ""
49*cf5a6c84SAndroid Build Coastguard Worker
50*cf5a6c84SAndroid Build Coastguard Workerecho "\\*(lq\\-\\^\\-\\*(rq" >banana/man1/toybox.1
51*cf5a6c84SAndroid Build Coastguard Workertesting "gawk quote" "$MAN toybox" " \"--\"\n\n" "" ""
52*cf5a6c84SAndroid Build Coastguard Worker
53*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
54*cf5a6c84SAndroid Build Coastguard Worker.IP \\(bu
55*cf5a6c84SAndroid Build Coastguard Worker[\\fB|\\fP\\(bv\\fB|&\\fP]
56*cf5a6c84SAndroid Build Coastguard WorkerEOF
57*cf5a6c84SAndroid Build Coastguard Workertesting "bash symbol" "$MAN toybox" " * [|||&]\n\n" "" ""
58*cf5a6c84SAndroid Build Coastguard Worker
59*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
60*cf5a6c84SAndroid Build Coastguard Worker\\&\\fBfflush(...)\\fR
61*cf5a6c84SAndroid Build Coastguard Worker\\f(CW$ ssh ...\\fP
62*cf5a6c84SAndroid Build Coastguard WorkerEOF
63*cf5a6c84SAndroid Build Coastguard Workertesting "gawk,rsync fancy" "$MAN toybox" " fflush(...) $ ssh ...\n\n" "" ""
64*cf5a6c84SAndroid Build Coastguard Worker
65*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
66*cf5a6c84SAndroid Build Coastguard Worker"\\eC\\-x\\eC\\-r": re\\-read
67*cf5a6c84SAndroid Build Coastguard Workermust be \\(>= 1
68*cf5a6c84SAndroid Build Coastguard WorkerEOF
69*cf5a6c84SAndroid Build Coastguard Workertesting "bash escape" "$MAN toybox" " \"\C-x\C-r\": re-read must be >= 1\n\n" "" ""
70*cf5a6c84SAndroid Build Coastguard Worker
71*cf5a6c84SAndroid Build Coastguard Workerecho "\\*(AK language.  The \\*(PX standard" >banana/man1/toybox.1
72*cf5a6c84SAndroid Build Coastguard Workertesting "gawk var" "$MAN toybox" " #AK language.  The #PX standard\n\n" "" ""
73*cf5a6c84SAndroid Build Coastguard Worker
74*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
75*cf5a6c84SAndroid Build Coastguard WorkerIf set to
76*cf5a6c84SAndroid Build Coastguard Worker.BR On ,
77*cf5a6c84SAndroid Build Coastguard Worker(...)
78*cf5a6c84SAndroid Build Coastguard WorkerEOF
79*cf5a6c84SAndroid Build Coastguard Workertesting "bash boldpunct" "$MAN toybox" " If set to On, (...)\n\n" "" ""
80*cf5a6c84SAndroid Build Coastguard Worker
81*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
82*cf5a6c84SAndroid Build Coastguard Worker.IP \\fB\$endif\\fP
83*cf5a6c84SAndroid Build Coastguard Worker(...)
84*cf5a6c84SAndroid Build Coastguard Worker.IP \\fB\$else\\fP
85*cf5a6c84SAndroid Build Coastguard Worker(...)
86*cf5a6c84SAndroid Build Coastguard Worker.IP \\fB\$include\\fP
87*cf5a6c84SAndroid Build Coastguard WorkerEOF
88*cf5a6c84SAndroid Build Coastguard Workertesting "bash list" "$MAN toybox" " \$endif (...)\n\n \$else (...)\n\n \$include\n\n" "" ""
89*cf5a6c84SAndroid Build Coastguard Worker
90*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
91*cf5a6c84SAndroid Build Coastguard Workerasynchronously (in the
92*cf5a6c84SAndroid Build Coastguard Worker.IR background ),
93*cf5a6c84SAndroid Build Coastguard Workerit prints
94*cf5a6c84SAndroid Build Coastguard WorkerEOF
95*cf5a6c84SAndroid Build Coastguard Workertesting "bash itapunct" "$MAN toybox" " asynchronously (in the background), it prints\n\n" "" ""
96*cf5a6c84SAndroid Build Coastguard Worker
97*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
98*cf5a6c84SAndroid Build Coastguard Worker(...)
99*cf5a6c84SAndroid Build Coastguard Worker.B Bash
100*cf5a6c84SAndroid Build Coastguard Workeris
101*cf5a6c84SAndroid Build Coastguard WorkerEOF
102*cf5a6c84SAndroid Build Coastguard Workertesting "bash bold" "$MAN toybox" " (...) Bash is\n\n" "" ""
103*cf5a6c84SAndroid Build Coastguard Worker
104*cf5a6c84SAndroid Build Coastguard Worker# TODO: Unquote.
105*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
106*cf5a6c84SAndroid Build Coastguard Worker.PD 0
107*cf5a6c84SAndroid Build Coastguard Worker.BI \\-f " program-file"
108*cf5a6c84SAndroid Build Coastguard Worker.TP
109*cf5a6c84SAndroid Build Coastguard WorkerEOF
110*cf5a6c84SAndroid Build Coastguard Workertesting "gawk boldita" "$MAN toybox" " -f \" program-file\"\n\n" "" ""
111*cf5a6c84SAndroid Build Coastguard Worker
112*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
113*cf5a6c84SAndroid Build Coastguard Workersame format as
114*cf5a6c84SAndroid Build Coastguard Worker.FN /etc/hosts
115*cf5a6c84SAndroid Build Coastguard Worker(...)
116*cf5a6c84SAndroid Build Coastguard WorkerEOF
117*cf5a6c84SAndroid Build Coastguard Workertesting "bash filename" "$MAN toybox" " same format as /etc/hosts (...)\n\n" "" ""
118*cf5a6c84SAndroid Build Coastguard Worker
119*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
120*cf5a6c84SAndroid Build Coastguard WorkerThe
121*cf5a6c84SAndroid Build Coastguard Worker.I Internal Field Separator
122*cf5a6c84SAndroid Build Coastguard Workerthat is used
123*cf5a6c84SAndroid Build Coastguard WorkerEOF
124*cf5a6c84SAndroid Build Coastguard Workertesting "bash ita" "$MAN toybox" " The Internal Field Separator that is used\n\n" "" ""
125*cf5a6c84SAndroid Build Coastguard Worker
126*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
127*cf5a6c84SAndroid Build Coastguard Worker.if n Copyright (C) 2019
128*cf5a6c84SAndroid Build Coastguard Worker.if t Copyright \\(co 2019
129*cf5a6c84SAndroid Build Coastguard WorkerEOF
130*cf5a6c84SAndroid Build Coastguard Workertesting "bash nroff" "$MAN toybox" " Copyright (C) 2019\n\n" "" ""
131*cf5a6c84SAndroid Build Coastguard Worker
132*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
133*cf5a6c84SAndroid Build Coastguard Worker.EX
134*cf5a6c84SAndroid Build Coastguard Worker#include <stdio.h>
135*cf5a6c84SAndroid Build Coastguard Worker#include <stdlib.h>
136*cf5a6c84SAndroid Build Coastguard Worker.EE
137*cf5a6c84SAndroid Build Coastguard WorkerEOF
138*cf5a6c84SAndroid Build Coastguard Workertesting "stat example" "$MAN toybox" "#include <stdio.h>\n#include <stdlib.h>\n\n\n" "" ""
139*cf5a6c84SAndroid Build Coastguard Worker
140*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
141*cf5a6c84SAndroid Build Coastguard Worker(...)
142*cf5a6c84SAndroid Build Coastguard Worker.PP
143*cf5a6c84SAndroid Build Coastguard Worker(...)
144*cf5a6c84SAndroid Build Coastguard WorkerEOF
145*cf5a6c84SAndroid Build Coastguard Workertesting "bash paragraph" "$MAN toybox" " (...)\n\n (...)\n\n" "" ""
146*cf5a6c84SAndroid Build Coastguard Worker
147*cf5a6c84SAndroid Build Coastguard Worker# TODO: Find some command I saw that has a different see below.
148*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
149*cf5a6c84SAndroid Build Coastguard Worker(see
150*cf5a6c84SAndroid Build Coastguard Worker.SM
151*cf5a6c84SAndroid Build Coastguard Worker.B INVOCATION
152*cf5a6c84SAndroid Build Coastguard Workerbelow)
153*cf5a6c84SAndroid Build Coastguard WorkerEOF
154*cf5a6c84SAndroid Build Coastguard Workertesting "bash small" "$MAN toybox" " (see INVOCATION below)\n\n" "" ""
155*cf5a6c84SAndroid Build Coastguard Worker
156*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
157*cf5a6c84SAndroid Build Coastguard Worker(...)
158*cf5a6c84SAndroid Build Coastguard Worker.SH "SHELL GRAMMAR"
159*cf5a6c84SAndroid Build Coastguard Worker.SS Simple Commands
160*cf5a6c84SAndroid Build Coastguard Worker.PP
161*cf5a6c84SAndroid Build Coastguard Worker(...)
162*cf5a6c84SAndroid Build Coastguard WorkerEOF
163*cf5a6c84SAndroid Build Coastguard Workertesting "bash section" "$MAN toybox" " (...)\n\n\"SHELL GRAMMAR\"\n\nSimple Commands\n\n (...)\n\n" "" ""
164*cf5a6c84SAndroid Build Coastguard Worker
165*cf5a6c84SAndroid Build Coastguard Workerecho ".so man1/last.1" >banana/man1/toybox.1
166*cf5a6c84SAndroid Build Coastguard Workertesting "lastb" "$MAN toybox" "See last.1\n\n" "" ""
167*cf5a6c84SAndroid Build Coastguard Worker
168*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
169*cf5a6c84SAndroid Build Coastguard Worker.TH TOYBOX 1 "Apr 13 2019" "Project Organization" "Document Name"
170*cf5a6c84SAndroid Build Coastguard Worker.PP
171*cf5a6c84SAndroid Build Coastguard Worker.TH "TOYBOX" "1" "04/13/2019" "Toybox 0\\&.8\\&.0" "Toybox Manual"
172*cf5a6c84SAndroid Build Coastguard WorkerEOF
173*cf5a6c84SAndroid Build Coastguard Workertesting "gawk,git head" "$MAN toybox" "TOYBOX 1  Apr 13 2019   Project Organization   Document Name \n\n TOYBOX   1   04/13/2019   Toybox 0.8.0   Toybox Manual \n\n" "" ""
174*cf5a6c84SAndroid Build Coastguard Worker
175*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
176*cf5a6c84SAndroid Build Coastguard Worker(...)
177*cf5a6c84SAndroid Build Coastguard Worker.PP
178*cf5a6c84SAndroid Build Coastguard Worker.PD 0
179*cf5a6c84SAndroid Build Coastguard Worker.TP 10
180*cf5a6c84SAndroid Build Coastguard Worker.B \\-c
181*cf5a6c84SAndroid Build Coastguard WorkerIf the
182*cf5a6c84SAndroid Build Coastguard Worker.B \\-c
183*cf5a6c84SAndroid Build Coastguard Workeroption is present
184*cf5a6c84SAndroid Build Coastguard WorkerEOF
185*cf5a6c84SAndroid Build Coastguard Workertesting "bash table" "$MAN toybox" " (...)\n\n -c If the -c option is present\n\n" "" ""
186*cf5a6c84SAndroid Build Coastguard Worker
187*cf5a6c84SAndroid Build Coastguard Workercat >banana/man1/toybox.1 <<EOF
188*cf5a6c84SAndroid Build Coastguard Worker.de FN
189*cf5a6c84SAndroid Build Coastguard Worker.sp
190*cf5a6c84SAndroid Build Coastguard Worker.RE
191*cf5a6c84SAndroid Build Coastguard Worker'\" t
192*cf5a6c84SAndroid Build Coastguard WorkerEOF
193*cf5a6c84SAndroid Build Coastguard Workertesting "bash,git garbage" "$MAN toybox" "" "" ""
194*cf5a6c84SAndroid Build Coastguard Worker
195*cf5a6c84SAndroid Build Coastguard Worker# "bash,git garbage" from above has no content, -k skips it.
196*cf5a6c84SAndroid Build Coastguard Workerbzip2 >banana/man1/numbers.1.bz2 <<EOF
197*cf5a6c84SAndroid Build Coastguard Worker.TH NUMBERS 1 "2019 Apr 28" "Toybox Manual"
198*cf5a6c84SAndroid Build Coastguard Worker.SH NAME
199*cf5a6c84SAndroid Build Coastguard Workerman \- test -k
200*cf5a6c84SAndroid Build Coastguard Worker.SH ANOTHER SECTION
201*cf5a6c84SAndroid Build Coastguard Worker.so noop.1
202*cf5a6c84SAndroid Build Coastguard WorkerSkip this text.
203*cf5a6c84SAndroid Build Coastguard WorkerEOF
204*cf5a6c84SAndroid Build Coastguard Workerecho "No dash." | gzip >banana/man3/numbers.3.gz
205*cf5a6c84SAndroid Build Coastguard Workerecho .so man1/numbers.1 >banana/man5/numbers.5
206*cf5a6c84SAndroid Build Coastguard Workertesting "-k ." "$MAN -k ." "numbers.1.bz2 - test -k\nnumbers.3.gz - No dash.\nnumbers.5 - See numbers.1\n" "" ""
207*cf5a6c84SAndroid Build Coastguard Workertesting "-k -k" "$MAN -k -k" "numbers.1.bz2 - test -k\n" "" ""
208*cf5a6c84SAndroid Build Coastguard Workertesting "-k d.*h" "$MAN -k 'd.*h'" "numbers.3.gz - No dash.\n" "" ""
209*cf5a6c84SAndroid Build Coastguard Workertesting "-k ers.1" "$MAN -k ers.1" "numbers.1.bz2 - test -k\nnumbers.5 - See numbers.1\n" "" ""
210*cf5a6c84SAndroid Build Coastguard Worker
211*cf5a6c84SAndroid Build Coastguard Workermkdir -p walrus/man1
212*cf5a6c84SAndroid Build Coastguard Workerecho Local development override. | bzip2 >walrus/man1/numbers.1.bz2
213*cf5a6c84SAndroid Build Coastguard Workertesting "-M /dir:/dir0" "man -M walrus:banana numbers" " Local development override.\n\n" "" ""
214*cf5a6c84SAndroid Build Coastguard Workertesting "-M /dir:/dir0 -k ." "man -M walrus:banana -k ." "numbers.1.bz2 - Local development override.\nnumbers.1.bz2 - test -k\nnumbers.3.gz - No dash.\nnumbers.5 - See numbers.1\n" "" ""
215*cf5a6c84SAndroid Build Coastguard Workertesting "-M '' x" "man -M '' numbers 2>&1" "man: no numbers\n" "" ""
216*cf5a6c84SAndroid Build Coastguard Workertesting "-M '' 1 x" "man -M '' 1 numbers 2>&1" "man: section 1 no numbers\n" "" ""
217*cf5a6c84SAndroid Build Coastguard Workertesting "-M '' -k ." "man -M '' -k ." "" "" ""
218*cf5a6c84SAndroid Build Coastguard Worker
219*cf5a6c84SAndroid Build Coastguard Worker# TODO: emerge section header newline
220*cf5a6c84SAndroid Build Coastguard Worker# TODO: fdm,man-pages man1p/, .nf, rare tags
221*cf5a6c84SAndroid Build Coastguard Worker
222*cf5a6c84SAndroid Build Coastguard Workerrm -rf banana walrus
223