1 #!/usr/bin/python 2 # 3 # Copyright 2008 Google Inc. All Rights Reserved. 4 5 """Test for atest.""" 6 7 import unittest 8 9 import common 10 from autotest_lib.cli import cli_mock 11 12 ATEST_USAGE_STRING = ('atest [acl|host|job|label|shard|test|user|' 13 'server] [action] [options]') 14 15 class main_unittest(cli_mock.cli_unittest): 16 """Unittest for atest command. 17 """ 18 19 def _test_help(self, argv, out_words_ok, err_words_ok): 20 """Test help output. 21 22 @param argv: A list of argument. 23 @param out_words_ok: Expected output. 24 @param err_words_ok: Expected output when input arguments are invalid. 25 """ 26 saved_outputs = None 27 for help in ['-h', '--help', 'help']: 28 outputs = self.run_cmd(argv + [help], exit_code=0, 29 out_words_ok=out_words_ok, 30 err_words_ok=err_words_ok) 31 if not saved_outputs: 32 saved_outputs = outputs 33 else: 34 self.assertEqual(outputs, saved_outputs) 35 36 37 def test_main_help(self): 38 """Main help level""" 39 self._test_help(argv=['atest'], 40 out_words_ok=[ATEST_USAGE_STRING], 41 err_words_ok=[]) 42 43 44 def test_main_help_topic(self): 45 """Topic level help""" 46 self._test_help(argv=['atest', 'host'], 47 out_words_ok=['atest host ', 48 '[create|delete|list|stat|mod|jobs|' 49 'rename|migrate] [options]'], 50 err_words_ok=[]) 51 52 53 def test_main_help_action(self): 54 """Action level help""" 55 self._test_help(argv=['atest:', 'host', 'mod'], 56 out_words_ok=['atest host mod [options]'], 57 err_words_ok=[]) 58 59 60 def test_main_no_topic(self): 61 """Test output when no topic is specified.""" 62 self.run_cmd(['atest'], exit_code=1, 63 out_words_ok=[ATEST_USAGE_STRING], 64 err_words_ok=['No topic argument']) 65 66 67 def test_main_bad_topic(self): 68 """Test output when an invalid topic is specified.""" 69 self.run_cmd(['atest', 'bad_topic'], exit_code=1, 70 out_words_ok=[ATEST_USAGE_STRING], 71 err_words_ok=['Invalid topic bad_topic\n']) 72 73 74 def test_main_bad_action(self): 75 """Test output when an invalid action is specified.""" 76 self.run_cmd(['atest', 'host', 'bad_action'], exit_code=1, 77 out_words_ok=['atest host [create|delete|list|stat|' 78 'mod|jobs|rename|migrate] [options]'], 79 err_words_ok=['Invalid action bad_action']) 80 81 82 if __name__ == '__main__': 83 unittest.main() 84