From b2948a5f8809b3dfcc7a271666dc65c30b8ce36e Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Tue, 25 Jun 2013 18:52:58 +0100 Subject: [PATCH] Add tests for mutually exclusive options. --- tests/integration/cli_test.py | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tests/integration/cli_test.py b/tests/integration/cli_test.py index 682ff29f4c..6f5436ce29 100644 --- a/tests/integration/cli_test.py +++ b/tests/integration/cli_test.py @@ -20,6 +20,67 @@ class SaltCloudCliTest(integration.ShellCase, _call_binary_ = 'salt-cloud' + def test_function_arguments(self): + self.assertIn( + 'salt-cloud: error: --function expects two arguments: ' + ' ', + self.run_cloud('--function show_image -h', catch_stderr=True)[1] + ) + + def test_list_providers_accepts_no_arguments(self): + self.assertIn( + 'salt-cloud: error: \'--list-providers\' does not accept any ' + 'arguments', + self.run_cloud('--list-providers ec2', catch_stderr=True)[1] + ) + + def test_mutually_exclusive_query_options(self): + test_options = [ + '--query', '--full-query', '--select-query', '--list-providers' + ] + while True: + for idx in range(1, len(test_options)): + self.assertIn( + 'salt-cloud: error: The options {0}/{1} are mutually ' + 'exclusive. Please only choose one of them'.format( + test_options[0], test_options[idx] + ), + self.run_cloud( + '{0} {1}'.format(test_options[0], test_options[idx]), + catch_stderr=True)[1] + ) + # Remove the first option from the list + test_options.pop(0) + if len(test_options) <= 1: + # Only one left? Stop iterating + break + + def test_mutually_exclusive_list_options(self): + test_options = ['--list-locations', '--list-images', '--list-sizes'] + while True: + for idx in range(1, len(test_options)): + output = self.run_cloud( + '{0} ec2 {1} ec2'.format( + test_options[0], test_options[idx] + ), catch_stderr=True + ) + try: + self.assertIn( + 'salt-cloud: error: The options {0}/{1} are mutually ' + 'exclusive. Please only choose one of them'.format( + test_options[0], test_options[idx] + ), + output[1] + ) + except AssertionError: + print output + raise + # Remove the first option from the list + test_options.pop(0) + if len(test_options) <= 1: + # Only one left? Stop iterating + break + if __name__ == '__main__': from integration import run_testcase