Skip to content

Commit 3925a2f

Browse files
committed
tests: Add extra documentation tests
Explicitly test the --short-options and --long-options command line flags (not documented, but used by bash completion). Check that the synopsis and main man page documents every option (except a few that we explicitly leave undocumented). (cherry picked from commit dc1d3ef)
1 parent e83c6ac commit 3925a2f

File tree

5 files changed

+197
-0
lines changed

5 files changed

+197
-0
lines changed

tests/Makefile.am

+8
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ TESTS += \
192192
test-binary.sh \
193193
test-help.sh \
194194
test-version.sh \
195+
test-short-options.sh \
196+
test-long-options.sh \
197+
test-manual.sh \
198+
test-synopsis.sh \
195199
test-dump-config.sh \
196200
test-dump-config-major-1.sh \
197201
test-dump-config-version-major-minor.sh \
@@ -200,6 +204,10 @@ EXTRA_DIST += \
200204
test-binary.sh \
201205
test-help.sh \
202206
test-version.sh \
207+
test-short-options.sh \
208+
test-long-options.sh \
209+
test-manual.sh \
210+
test-synopsis.sh \
203211
test-dump-config.sh \
204212
test-dump-config-major-1.sh \
205213
test-dump-config-version-major-minor.sh \

tests/test-long-options.sh

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/usr/bin/env bash
2+
# nbdkit
3+
# Copyright (C) 2014 Red Hat Inc.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are
7+
# met:
8+
#
9+
# * Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright
13+
# notice, this list of conditions and the following disclaimer in the
14+
# documentation and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of Red Hat nor the names of its contributors may be
17+
# used to endorse or promote products derived from this software without
18+
# specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23+
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27+
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
# SUCH DAMAGE.
32+
33+
source ./functions.sh
34+
set -e
35+
set -x
36+
37+
nbdkit --long-options
38+
nbdkit --long-options | grep '^--help'
39+
nbdkit --long-options | grep '^--version'

tests/test-manual.sh

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env bash
2+
# nbdkit
3+
# Copyright (C) 2014-2022 Red Hat Inc.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are
7+
# met:
8+
#
9+
# * Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright
13+
# notice, this list of conditions and the following disclaimer in the
14+
# documentation and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of Red Hat nor the names of its contributors may be
17+
# used to endorse or promote products derived from this software without
18+
# specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23+
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27+
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
# SUCH DAMAGE.
32+
33+
# Test each option appears in the main nbdkit(1) manual page.
34+
35+
source ./functions.sh
36+
set -e
37+
set -x
38+
39+
# If these fail it's probably because you ran the script by hand.
40+
test -n "$srcdir"
41+
podfile=$srcdir/../docs/nbdkit.pod
42+
test -f "$podfile"
43+
44+
for i in $(nbdkit --short-options) $(nbdkit --long-options); do
45+
grep '^=item B<'$i'[=>]' $podfile
46+
done

tests/test-short-options.sh

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/usr/bin/env bash
2+
# nbdkit
3+
# Copyright (C) 2014-2022 Red Hat Inc.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are
7+
# met:
8+
#
9+
# * Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright
13+
# notice, this list of conditions and the following disclaimer in the
14+
# documentation and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of Red Hat nor the names of its contributors may be
17+
# used to endorse or promote products derived from this software without
18+
# specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23+
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27+
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
# SUCH DAMAGE.
32+
33+
source ./functions.sh
34+
set -e
35+
set -x
36+
37+
nbdkit --short-options
38+
nbdkit --short-options | grep '^-v'
39+
nbdkit --short-options | grep '^-V'

tests/test-synopsis.sh

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env bash
2+
# nbdkit
3+
# Copyright (C) 2014-2022 Red Hat Inc.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are
7+
# met:
8+
#
9+
# * Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright
13+
# notice, this list of conditions and the following disclaimer in the
14+
# documentation and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of Red Hat nor the names of its contributors may be
17+
# used to endorse or promote products derived from this software without
18+
# specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23+
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27+
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
# SUCH DAMAGE.
32+
33+
# Test each option appears in the synopsis.
34+
35+
source ./functions.sh
36+
set -e
37+
set -x
38+
39+
# If these fail it's probably because you ran the script by hand.
40+
test -n "$srcdir"
41+
synopsis=$srcdir/../docs/synopsis.txt
42+
test -f "$synopsis"
43+
44+
for i in $(nbdkit --short-options); do
45+
grep '[^-]'$i $synopsis
46+
done
47+
48+
for i in $(nbdkit --long-options); do
49+
case "$i" in
50+
# Only one version of each long option is shown in the
51+
# synopsis, so ignore other versions.
52+
--export-name) ;; # alias of -e, --exportname
53+
--no-fork) ;; # alias of -f
54+
--ip-addr) ;; # alias of -i, --ipaddr
55+
--new-style) ;; # alias of -n, --newstyle
56+
--old-style) ;; # alias of -o, --oldstyle
57+
--pid-file) ;; # alias of -P, --pidfile
58+
--read-only) ;; # alias of -r, --readonly
59+
--stdin) ;; # alias of -s, --single
60+
61+
# Anything else is tested.
62+
*)
63+
grep -- "$i" $synopsis
64+
esac
65+
done

0 commit comments

Comments
 (0)