summaryrefslogtreecommitdiff
path: root/cinderclient
diff options
context:
space:
mode:
authorEric Harney <eharney@redhat.com>2019-11-12 15:54:07 -0500
committerEric Harney <eharney@redhat.com>2019-11-12 15:55:08 -0500
commita7e9a49a3f851097b323093048c62b2acbbf5090 (patch)
tree86d3c1a8e9ba45ee3d7394402d7589904b067973 /cinderclient
parent7f282a5ea46cb46a306d16cc352c3beddf7c129e (diff)
downloadpython-cinderclient-a7e9a49a3f851097b323093048c62b2acbbf5090.tar.gz
Add test for subcommands
This tests that the expected subcommands register in the shell client, by looking at the output that would show up in "cinder help". The purpose of this is to help prevent us from accidentally deleting some commands when refactoring shell code. TODO: cover commands post-3.0 Change-Id: Ifcbc08ae9184fa33049b18f8ad7ef5d92003a7b8
Diffstat (limited to 'cinderclient')
-rw-r--r--cinderclient/shell.py1
-rw-r--r--cinderclient/tests/unit/v3/test_shell.py118
2 files changed, 119 insertions, 0 deletions
diff --git a/cinderclient/shell.py b/cinderclient/shell.py
index d948332..57c9d8c 100644
--- a/cinderclient/shell.py
+++ b/cinderclient/shell.py
@@ -135,6 +135,7 @@ class OpenStackCinderShell(object):
def __init__(self):
self.ks_logger = None
self.client_logger = None
+ self.extensions = []
def get_base_parser(self):
parser = CinderClientArgumentParser(
diff --git a/cinderclient/tests/unit/v3/test_shell.py b/cinderclient/tests/unit/v3/test_shell.py
index ee35ddf..4dd6c38 100644
--- a/cinderclient/tests/unit/v3/test_shell.py
+++ b/cinderclient/tests/unit/v3/test_shell.py
@@ -1443,3 +1443,121 @@ class ShellTest(utils.TestCase):
'--os-volume-api-version 3.59 transfer-list')
url = ('/volume-transfers/detail')
self.assert_called('GET', url)
+
+ def test_subcommand_parser(self):
+ """Ensure that all the expected commands show up.
+
+ This test ensures that refactoring code does not somehow result in
+ a command accidentally ceasing to exist.
+
+ TODO: add a similar test for 3.59 or so
+ """
+ p = self.shell.get_subcommand_parser(api_versions.APIVersion("3.0"),
+ input_args=['help'], do_help=True)
+ help_text = p.format_help()
+
+ # These are v3.0 commands only
+ expected_commands = ('absolute-limits',
+ 'api-version',
+ 'availability-zone-list',
+ 'backup-create',
+ 'backup-delete',
+ 'backup-export',
+ 'backup-import',
+ 'backup-list',
+ 'backup-reset-state',
+ 'backup-restore',
+ 'backup-show',
+ 'cgsnapshot-create',
+ 'cgsnapshot-delete',
+ 'cgsnapshot-list',
+ 'cgsnapshot-show',
+ 'consisgroup-create',
+ 'consisgroup-create-from-src',
+ 'consisgroup-delete',
+ 'consisgroup-list',
+ 'consisgroup-show',
+ 'consisgroup-update',
+ 'create',
+ 'delete',
+ 'encryption-type-create',
+ 'encryption-type-delete',
+ 'encryption-type-list',
+ 'encryption-type-show',
+ 'encryption-type-update',
+ 'extend',
+ 'extra-specs-list',
+ 'failover-host',
+ 'force-delete',
+ 'freeze-host',
+ 'get-capabilities',
+ 'get-pools',
+ 'image-metadata',
+ 'image-metadata-show',
+ 'list',
+ 'manage',
+ 'metadata',
+ 'metadata-show',
+ 'metadata-update-all',
+ 'migrate',
+ 'qos-associate',
+ 'qos-create',
+ 'qos-delete',
+ 'qos-disassociate',
+ 'qos-disassociate-all',
+ 'qos-get-association',
+ 'qos-key',
+ 'qos-list',
+ 'qos-show',
+ 'quota-class-show',
+ 'quota-class-update',
+ 'quota-defaults',
+ 'quota-delete',
+ 'quota-show',
+ 'quota-update',
+ 'quota-usage',
+ 'rate-limits',
+ 'readonly-mode-update',
+ 'rename',
+ 'reset-state',
+ 'retype',
+ 'service-disable',
+ 'service-enable',
+ 'service-list',
+ 'set-bootable',
+ 'show',
+ 'snapshot-create',
+ 'snapshot-delete',
+ 'snapshot-list',
+ 'snapshot-manage',
+ 'snapshot-metadata',
+ 'snapshot-metadata-show',
+ 'snapshot-metadata-update-all',
+ 'snapshot-rename',
+ 'snapshot-reset-state',
+ 'snapshot-show',
+ 'snapshot-unmanage',
+ 'thaw-host',
+ 'transfer-accept',
+ 'transfer-create',
+ 'transfer-delete',
+ 'transfer-list',
+ 'transfer-show',
+ 'type-access-add',
+ 'type-access-list',
+ 'type-access-remove',
+ 'type-create',
+ 'type-default',
+ 'type-delete',
+ 'type-key',
+ 'type-list',
+ 'type-show',
+ 'type-update',
+ 'unmanage',
+ 'upload-to-image',
+ 'version-list',
+ 'bash-completion',
+ 'help',)
+
+ for e in expected_commands:
+ self.assertIn(' ' + e, help_text)