From a7e9a49a3f851097b323093048c62b2acbbf5090 Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Tue, 12 Nov 2019 15:54:07 -0500 Subject: 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 --- cinderclient/shell.py | 1 + cinderclient/tests/unit/v3/test_shell.py | 118 +++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) 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) -- cgit v1.2.1