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