I wanted help SYNOPSIS output that was regular enough to parse.
Enforcing/correcting the following is the first step:
From fa58b801ea80f52a10d48ab75a359ffe06c4be40 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Fri, 21 Nov 2008 10:58:36 +0100
Subject: [PATCH] tests: new test: virsh-synopsis
* tests/virsh-synopsis: new file
* tests/Makefile.am (test_scripts): Add virsh-synopsis.
* src/virsh.c: Correct help SYNOPSIS for each of seven commands.
When I first ran this script, "make check" failed like this:
...
invalid help SYNOPSIS for net-create:
create a network from an XML <file>
invalid help SYNOPSIS for net-define:
define a network from an XML <file>
invalid help SYNOPSIS for net-start:
start <network>
invalid help SYNOPSIS for pool-create:
create a pool from an XML <file>
invalid help SYNOPSIS for pool-define:
define a pool from an XML <file>
invalid help SYNOPSIS for pool-start:
start <pool>
invalid help SYNOPSIS for vol-create:
create <file>
FAIL: virsh-synopsis
---
src/virsh.c | 17 +++++++++--------
tests/Makefile.am | 1 +
tests/virsh-synopsis | 43 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 53 insertions(+), 8 deletions(-)
create mode 100755 tests/virsh-synopsis
diff --git a/src/virsh.c b/src/virsh.c
index 4195781..78c536e 100644
--- a/src/virsh.c
+++ b/src/virsh.c
@@ -2365,7 +2365,7 @@ cmdNetworkAutostart(vshControl *ctl, const vshCmd *cmd)
* "net-create" command
*/
static const vshCmdInfo info_network_create[] = {
- {"syntax", "create a network from an XML <file>"},
+ {"syntax", "net-create <file>"},
{"help", gettext_noop("create a network from an XML file")},
{"desc", gettext_noop("Create a network.")},
{NULL, NULL}
@@ -2413,7 +2413,7 @@ cmdNetworkCreate(vshControl *ctl, const vshCmd *cmd)
* "net-define" command
*/
static const vshCmdInfo info_network_define[] = {
- {"syntax", "define a network from an XML <file>"},
+ {"syntax", "net-define <file>"},
{"help", gettext_noop("define (but don't start) a network from an
XML file")},
{"desc", gettext_noop("Define a network.")},
{NULL, NULL}
@@ -2697,7 +2697,7 @@ cmdNetworkName(vshControl *ctl, const vshCmd *cmd)
* "net-start" command
*/
static const vshCmdInfo info_network_start[] = {
- {"syntax", "start <network>"},
+ {"syntax", "net-start <network>"},
{"help", gettext_noop("start a (previously defined) inactive
network")},
{"desc", gettext_noop("Start a network.")},
{NULL, NULL}
@@ -2862,14 +2862,15 @@ cmdPoolAutostart(vshControl *ctl, const vshCmd *cmd)
* "pool-create" command
*/
static const vshCmdInfo info_pool_create[] = {
- {"syntax", "create a pool from an XML <file>"},
+ {"syntax", "pool-create <file>"},
{"help", gettext_noop("create a pool from an XML file")},
{"desc", gettext_noop("Create a pool.")},
{NULL, NULL}
};
static const vshCmdOptDef opts_pool_create[] = {
- {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("file containing an
XML pool description")},
+ {"file", VSH_OT_DATA, VSH_OFLAG_REQ,
+ gettext_noop("file containing an XML pool description")},
{NULL, 0, 0, NULL}
};
@@ -3000,7 +3001,7 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd)
* "pool-define" command
*/
static const vshCmdInfo info_pool_define[] = {
- {"syntax", "define a pool from an XML <file>"},
+ {"syntax", "pool-define <file>"},
{"help", gettext_noop("define (but don't start) a pool from an XML
file")},
{"desc", gettext_noop("Define a pool.")},
{NULL, NULL}
@@ -3727,7 +3728,7 @@ cmdPoolName(vshControl *ctl, const vshCmd *cmd)
* "pool-start" command
*/
static const vshCmdInfo info_pool_start[] = {
- {"syntax", "start <pool>"},
+ {"syntax", "pool-start <pool>"},
{"help", gettext_noop("start a (previously defined) inactive
pool")},
{"desc", gettext_noop("Start a pool.")},
{NULL, NULL}
@@ -3965,7 +3966,7 @@ cmdPoolUuid(vshControl *ctl, const vshCmd *cmd)
* "vol-create" command
*/
static const vshCmdInfo info_vol_create[] = {
- {"syntax", "create <file>"},
+ {"syntax", "vol-create <file>"},
{"help", gettext_noop("create a vol from an XML file")},
{"desc", gettext_noop("Create a vol.")},
{NULL, NULL}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0b4eebd..bec3791 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -58,6 +58,7 @@ test_scripts += \
undefine \
vcpupin
virsh-all
+ virsh-synopsis
endif
EXTRA_DIST += $(test_scripts)
diff --git a/tests/virsh-synopsis b/tests/virsh-synopsis
new file mode 100755
index 0000000..6ce58a2
--- /dev/null
+++ b/tests/virsh-synopsis
@@ -0,0 +1,43 @@
+#!/bin/sh
+# ensure that each command's help "SYNOPSIS" line starts with the command
name
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <
http://www.gnu.org/licenses/>.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ virsh --version
+fi
+
+. $srcdir/test-lib.sh
+
+fail=0
+
+test_url=test:///default
+
+virsh -c $test_url help > cmds || framework_failure
+cmds=$(sed -n 's/^ \([^ ][^ ]*\) .*/\1/p' cmds) || framework_failure
+test -n "$cmds" || framework_failure
+
+for i in $cmds; do
+ virsh -c $test_url help $i > help || fail=1
+ grep -A1 '^ SYNOPSIS$' help > synopsis \
+ || { echo 1>&2 missing or invalid help SYNOPSIS for $i; fail=1; }
+ sed -n 2p synopsis > s2 || framework_failure
+ grep -E "^ $i( |$)" s2 > /dev/null \
+ || { echo 1>&2 "invalid help SYNOPSIS for $i:"; cat s2
1>&2; fail=1; }
+done
+
+(exit $fail); exit $fail
--
1.6.0.4.1021.g4320