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