@@ -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