summaryrefslogtreecommitdiff
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
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
-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)