Mike Frysinger | d03e6b5 | 2019-08-03 12:49:01 -0400 | [diff] [blame] | 1 | #!/usr/bin/python2 |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 2 | # |
| 3 | # Copyright 2008 Google Inc. All Rights Reserved. |
| 4 | |
| 5 | """Test for atest.""" |
| 6 | |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 7 | import unittest |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 8 | |
| 9 | import common |
| 10 | from autotest_lib.cli import cli_mock |
| 11 | |
Allen Li | 335f216 | 2017-02-01 14:47:01 -0800 | [diff] [blame] | 12 | ATEST_USAGE_STRING = ('atest [acl|host|job|label|shard|test|user|' |
Richard Barnette | aeb7966 | 2018-04-18 13:51:40 -0700 | [diff] [blame] | 13 | 'server] [action] [options]') |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 14 | |
| 15 | class main_unittest(cli_mock.cli_unittest): |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 16 | """Unittest for atest command. |
| 17 | """ |
| 18 | |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 19 | def _test_help(self, argv, out_words_ok, err_words_ok): |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 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 | """ |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 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'], |
Dan Shi | 25e1fd4 | 2014-12-19 14:36:42 -0800 | [diff] [blame] | 40 | out_words_ok=[ATEST_USAGE_STRING], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 41 | err_words_ok=[]) |
| 42 | |
| 43 | |
| 44 | def test_main_help_topic(self): |
| 45 | """Topic level help""" |
| 46 | self._test_help(argv=['atest', 'host'], |
mbligh | 901aaa9 | 2008-08-27 19:34:20 +0000 | [diff] [blame] | 47 | out_words_ok=['atest host ', |
Ningning Xia | c46bdd1 | 2018-05-29 11:24:14 -0700 | [diff] [blame] | 48 | '[create|delete|list|stat|mod|jobs|' |
Gregory Nisbet | 79751f1 | 2020-02-11 21:23:18 -0800 | [diff] [blame] | 49 | 'rename|migrate] [options]'], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 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'], |
mbligh | 901aaa9 | 2008-08-27 19:34:20 +0000 | [diff] [blame] | 56 | out_words_ok=['atest host mod [options]'], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 57 | err_words_ok=[]) |
| 58 | |
| 59 | |
| 60 | def test_main_no_topic(self): |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 61 | """Test output when no topic is specified.""" |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 62 | self.run_cmd(['atest'], exit_code=1, |
Dan Shi | 25e1fd4 | 2014-12-19 14:36:42 -0800 | [diff] [blame] | 63 | out_words_ok=[ATEST_USAGE_STRING], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 64 | err_words_ok=['No topic argument']) |
| 65 | |
| 66 | |
| 67 | def test_main_bad_topic(self): |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 68 | """Test output when an invalid topic is specified.""" |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 69 | self.run_cmd(['atest', 'bad_topic'], exit_code=1, |
Dan Shi | 25e1fd4 | 2014-12-19 14:36:42 -0800 | [diff] [blame] | 70 | out_words_ok=[ATEST_USAGE_STRING], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 71 | err_words_ok=['Invalid topic bad_topic\n']) |
| 72 | |
| 73 | |
| 74 | def test_main_bad_action(self): |
Dan Shi | 3963caa | 2014-11-26 12:51:25 -0800 | [diff] [blame] | 75 | """Test output when an invalid action is specified.""" |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 76 | self.run_cmd(['atest', 'host', 'bad_action'], exit_code=1, |
showard | fb64e6a | 2009-04-22 21:01:18 +0000 | [diff] [blame] | 77 | out_words_ok=['atest host [create|delete|list|stat|' |
Gregory Nisbet | 79751f1 | 2020-02-11 21:23:18 -0800 | [diff] [blame] | 78 | 'mod|jobs|rename|migrate] [options]'], |
mbligh | be630eb | 2008-08-01 16:41:48 +0000 | [diff] [blame] | 79 | err_words_ok=['Invalid action bad_action']) |
| 80 | |
| 81 | |
| 82 | if __name__ == '__main__': |
| 83 | unittest.main() |