chiark / gitweb /
test suite: manpages-format: New test
[dgit.git] / tests / tests / manpages-format
1 #!/bin/bash
2 set -e
3 autoimport=
4 . tests/lib
5
6 t-dependencies man-db make groff git-debrebase
7
8 cd $root
9
10 printenv |grep MAKE ||: |sort
11 manpages=$(MAKEFLAGS= MAKELEVEL= make list-manpages)
12
13 export MANWIDTH=80
14
15 run_man () {
16         if [ "x${DGIT_MANPAGES_SOURCE_DIR}" = x ]; then
17                 cmd='man "$@" $section $page'
18         else
19                 make $roff >&2
20                 cmd='man "$@" -l $roff'
21         fi
22         eval "$cmd 2>&1 >/dev/null |tee $errs >&2"
23 }
24
25 for roff in $manpages; do
26         >$tmp/$roff.expected
27 done
28
29 expected () {
30         cat >$tmp/$1.expected
31 }
32
33 not_egrep_vxPf () {
34         # egrep -vxPf does not work, so we reimplement it
35         perl -ne '
36                 BEGIN () {
37                         open PATS, shift @ARGV or die $!;
38                         $re = join "|", map { chomp; qr{^(?:$_)$} } <PATS>;
39                 }
40                 next if m{$re};
41                 print STDERR "unexpected: $_";
42                 $bad = 1;
43                 END { die "unexpected, re= $re\n" if $bad; }
44         ' "$@"
45 }
46
47 expected dgit.1 <<'END'
48 .* # table wider than line width
49 END
50
51 for roff in $manpages; do
52         section=${roff##*.}
53         page=${roff%.*}
54
55         errs=$tmp/$roff.errs
56         run_man >/dev/null
57         perl -0777 -i~ -pe 's/\n[ \t]+/ # /' $errs
58         not_egrep_vxPf $tmp/$roff.expected $errs
59 done
60
61 t-ok