blob: 23338637ed00cc6722964c5936f65047a23de7c0 [file] [log] [blame]
mblighbe630eb2008-08-01 16:41:48 +00001#!/usr/bin/python
2#
3# Copyright 2008 Google Inc. All Rights Reserved.
4
5"""Test for atest."""
6
Dan Shi3963caa2014-11-26 12:51:25 -08007import unittest
mblighbe630eb2008-08-01 16:41:48 +00008
9import common
10from autotest_lib.cli import cli_mock
11
Allen Li335f2162017-02-01 14:47:01 -080012ATEST_USAGE_STRING = ('atest [acl|host|job|label|shard|test|user|'
Richard Barnetteaeb79662018-04-18 13:51:40 -070013 'server] [action] [options]')
mblighbe630eb2008-08-01 16:41:48 +000014
15class main_unittest(cli_mock.cli_unittest):
Dan Shi3963caa2014-11-26 12:51:25 -080016 """Unittest for atest command.
17 """
18
mblighbe630eb2008-08-01 16:41:48 +000019 def _test_help(self, argv, out_words_ok, err_words_ok):
Dan Shi3963caa2014-11-26 12:51:25 -080020 """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 """
mblighbe630eb2008-08-01 16:41:48 +000026 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 Shi25e1fd42014-12-19 14:36:42 -080040 out_words_ok=[ATEST_USAGE_STRING],
mblighbe630eb2008-08-01 16:41:48 +000041 err_words_ok=[])
42
43
44 def test_main_help_topic(self):
45 """Topic level help"""
46 self._test_help(argv=['atest', 'host'],
mbligh901aaa92008-08-27 19:34:20 +000047 out_words_ok=['atest host ',
Ningning Xiac46bdd12018-05-29 11:24:14 -070048 '[create|delete|list|stat|mod|jobs|'
Ningning Xia9df3d152018-05-23 17:15:14 -070049 'rename|migrate] [options]'],
mblighbe630eb2008-08-01 16:41:48 +000050 err_words_ok=[])
51
52
53 def test_main_help_action(self):
54 """Action level help"""
55 self._test_help(argv=['atest:', 'host', 'mod'],
mbligh901aaa92008-08-27 19:34:20 +000056 out_words_ok=['atest host mod [options]'],
mblighbe630eb2008-08-01 16:41:48 +000057 err_words_ok=[])
58
59
60 def test_main_no_topic(self):
Dan Shi3963caa2014-11-26 12:51:25 -080061 """Test output when no topic is specified."""
mblighbe630eb2008-08-01 16:41:48 +000062 self.run_cmd(['atest'], exit_code=1,
Dan Shi25e1fd42014-12-19 14:36:42 -080063 out_words_ok=[ATEST_USAGE_STRING],
mblighbe630eb2008-08-01 16:41:48 +000064 err_words_ok=['No topic argument'])
65
66
67 def test_main_bad_topic(self):
Dan Shi3963caa2014-11-26 12:51:25 -080068 """Test output when an invalid topic is specified."""
mblighbe630eb2008-08-01 16:41:48 +000069 self.run_cmd(['atest', 'bad_topic'], exit_code=1,
Dan Shi25e1fd42014-12-19 14:36:42 -080070 out_words_ok=[ATEST_USAGE_STRING],
mblighbe630eb2008-08-01 16:41:48 +000071 err_words_ok=['Invalid topic bad_topic\n'])
72
73
74 def test_main_bad_action(self):
Dan Shi3963caa2014-11-26 12:51:25 -080075 """Test output when an invalid action is specified."""
mblighbe630eb2008-08-01 16:41:48 +000076 self.run_cmd(['atest', 'host', 'bad_action'], exit_code=1,
showardfb64e6a2009-04-22 21:01:18 +000077 out_words_ok=['atest host [create|delete|list|stat|'
Ningning Xia9df3d152018-05-23 17:15:14 -070078 'mod|jobs|rename|migrate] [options]'],
mblighbe630eb2008-08-01 16:41:48 +000079 err_words_ok=['Invalid action bad_action'])
80
81
82if __name__ == '__main__':
83 unittest.main()