Skip to content

Commit a7e9a49

Browse files
committed
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
1 parent 7f282a5 commit a7e9a49

2 files changed

Lines changed: 119 additions & 0 deletions

File tree

cinderclient/shell.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ class OpenStackCinderShell(object):
135135
def __init__(self):
136136
self.ks_logger = None
137137
self.client_logger = None
138+
self.extensions = []
138139

139140
def get_base_parser(self):
140141
parser = CinderClientArgumentParser(

cinderclient/tests/unit/v3/test_shell.py

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,3 +1443,121 @@ def test_list_transfer_sorty_not_sorty(self):
14431443
'--os-volume-api-version 3.59 transfer-list')
14441444
url = ('/volume-transfers/detail')
14451445
self.assert_called('GET', url)
1446+
1447+
def test_subcommand_parser(self):
1448+
"""Ensure that all the expected commands show up.
1449+
1450+
This test ensures that refactoring code does not somehow result in
1451+
a command accidentally ceasing to exist.
1452+
1453+
TODO: add a similar test for 3.59 or so
1454+
"""
1455+
p = self.shell.get_subcommand_parser(api_versions.APIVersion("3.0"),
1456+
input_args=['help'], do_help=True)
1457+
help_text = p.format_help()
1458+
1459+
# These are v3.0 commands only
1460+
expected_commands = ('absolute-limits',
1461+
'api-version',
1462+
'availability-zone-list',
1463+
'backup-create',
1464+
'backup-delete',
1465+
'backup-export',
1466+
'backup-import',
1467+
'backup-list',
1468+
'backup-reset-state',
1469+
'backup-restore',
1470+
'backup-show',
1471+
'cgsnapshot-create',
1472+
'cgsnapshot-delete',
1473+
'cgsnapshot-list',
1474+
'cgsnapshot-show',
1475+
'consisgroup-create',
1476+
'consisgroup-create-from-src',
1477+
'consisgroup-delete',
1478+
'consisgroup-list',
1479+
'consisgroup-show',
1480+
'consisgroup-update',
1481+
'create',
1482+
'delete',
1483+
'encryption-type-create',
1484+
'encryption-type-delete',
1485+
'encryption-type-list',
1486+
'encryption-type-show',
1487+
'encryption-type-update',
1488+
'extend',
1489+
'extra-specs-list',
1490+
'failover-host',
1491+
'force-delete',
1492+
'freeze-host',
1493+
'get-capabilities',
1494+
'get-pools',
1495+
'image-metadata',
1496+
'image-metadata-show',
1497+
'list',
1498+
'manage',
1499+
'metadata',
1500+
'metadata-show',
1501+
'metadata-update-all',
1502+
'migrate',
1503+
'qos-associate',
1504+
'qos-create',
1505+
'qos-delete',
1506+
'qos-disassociate',
1507+
'qos-disassociate-all',
1508+
'qos-get-association',
1509+
'qos-key',
1510+
'qos-list',
1511+
'qos-show',
1512+
'quota-class-show',
1513+
'quota-class-update',
1514+
'quota-defaults',
1515+
'quota-delete',
1516+
'quota-show',
1517+
'quota-update',
1518+
'quota-usage',
1519+
'rate-limits',
1520+
'readonly-mode-update',
1521+
'rename',
1522+
'reset-state',
1523+
'retype',
1524+
'service-disable',
1525+
'service-enable',
1526+
'service-list',
1527+
'set-bootable',
1528+
'show',
1529+
'snapshot-create',
1530+
'snapshot-delete',
1531+
'snapshot-list',
1532+
'snapshot-manage',
1533+
'snapshot-metadata',
1534+
'snapshot-metadata-show',
1535+
'snapshot-metadata-update-all',
1536+
'snapshot-rename',
1537+
'snapshot-reset-state',
1538+
'snapshot-show',
1539+
'snapshot-unmanage',
1540+
'thaw-host',
1541+
'transfer-accept',
1542+
'transfer-create',
1543+
'transfer-delete',
1544+
'transfer-list',
1545+
'transfer-show',
1546+
'type-access-add',
1547+
'type-access-list',
1548+
'type-access-remove',
1549+
'type-create',
1550+
'type-default',
1551+
'type-delete',
1552+
'type-key',
1553+
'type-list',
1554+
'type-show',
1555+
'type-update',
1556+
'unmanage',
1557+
'upload-to-image',
1558+
'version-list',
1559+
'bash-completion',
1560+
'help',)
1561+
1562+
for e in expected_commands:
1563+
self.assertIn(' ' + e, help_text)

0 commit comments

Comments
 (0)