test1173: detect some basic man page format mistakes

Triggered by PR #4111

Closes #4113
This commit is contained in:
Daniel Stenberg 2019-07-15 01:38:39 +02:00
parent 4c91ab7b2f
commit 7fb66c4034
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
3 changed files with 90 additions and 1 deletions

View File

@ -129,7 +129,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 \
test1170 test1171 test1172 \
test1170 test1171 test1172 test1173 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \

26
tests/data/test1173 Normal file
View File

@ -0,0 +1,26 @@
<testcase>
<info>
<keywords>
source analysis
documentation
--manual
</keywords>
</info>
#
# Client-side
<client>
<server>
none
</server>
<name>
Basic man page syntax check
</name>
<command type="perl">
%SRCDIR/manpage-syntax.pl %SRCDIR/../docs/*.1 %SRCDIR/../docs/libcurl/*.3
</command>
</client>
</testcase>

63
tests/manpage-syntax.pl Normal file
View File

@ -0,0 +1,63 @@
#!/usr/bin/env perl
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
#
# Scan man page(s) and detect some simple and yet common formatting mistakes.
#
# Output all deviances to stderr.
use strict;
use warnings;
# we may get the dir roots pointed out
my @manpages=@ARGV;
my $errors = 0;
sub scanmanpage {
my ($file) = @_;
print "Check $file\n";
open(M, "<$file") || die "no such file: $file";
my $line = 1;
while(<M>) {
if($_ =~ /^\'/) {
print STDERR "$file:$line line starts with single quote!\n";
$errors++;
}
if($_ =~ /\\f([BI])(.*)/) {
my ($format, $rest) = ($1, $2);
if($rest !~ /\\fP/) {
print STDERR "$file:$line missing \\f${format} terminator!\n";
$errors++;
}
}
$line++;
}
close(M);
}
for my $m (@manpages) {
scanmanpage($m);
}
exit $errors;