1#!/usr/bin/python
2#
3# Copyright 2008 Google Inc. All Rights Reserved.
4
5"""Tests for test."""
6
7import unittest, sys, os
8
9import common
10from autotest_lib.cli import cli_mock, topic_common, test
11from autotest_lib.client.common_lib import control_data
12
13CLIENT = control_data.CONTROL_TYPE_NAMES.CLIENT
14SERVER = control_data.CONTROL_TYPE_NAMES.SERVER
15
16class test_list_unittest(cli_mock.cli_unittest):
17    values = [{u'description': u'unknown',
18               u'test_type': CLIENT,
19               u'test_class': u'Canned Test Sets',
20               u'path': u'client/tests/test0/control',
21               u'synch_type': u'Asynchronous',
22               u'id': 138,
23               u'name': u'test0',
24               u'experimental': False},
25              {u'description': u'unknown',
26               u'test_type': SERVER,
27               u'test_class': u'Kernel',
28               u'path': u'server/tests/test1/control',
29               u'synch_type': u'Asynchronous',
30               u'id': 139,
31               u'name': u'test1',
32               u'experimental': False},
33              {u'description': u'unknown',
34               u'test_type': CLIENT,
35               u'test_class': u'Canned Test Sets',
36               u'path': u'client/tests/test2/control.readprofile',
37               u'synch_type': u'Asynchronous',
38               u'id': 140,
39               u'name': u'test2',
40               u'experimental': False},
41              {u'description': u'unknown',
42               u'test_type': SERVER,
43               u'test_class': u'Canned Test Sets',
44               u'path': u'server/tests/test3/control',
45               u'synch_type': u'Asynchronous',
46               u'id': 142,
47               u'name': u'test3',
48               u'experimental': False},
49              {u'description': u'Random stuff to check that things are ok',
50               u'test_type': CLIENT,
51               u'test_class': u'Hardware',
52               u'path': u'client/tests/test4/control.export',
53               u'synch_type': u'Asynchronous',
54               u'id': 143,
55               u'name': u'test4',
56               u'experimental': True}]
57
58
59    def test_test_list_tests_default(self):
60        self.run_cmd(argv=['atest', 'test', 'list'],
61                     rpcs=[('get_tests', {'experimental': False},
62                            True, self.values)],
63                     out_words_ok=['test0', 'test1', 'test2',
64                                   'test3', 'test4'],
65                     out_words_no=['Random', 'control.export'])
66
67
68    def test_test_list_tests_all(self):
69        self.run_cmd(argv=['atest', 'test', 'list', '--all'],
70                     rpcs=[('get_tests', {},
71                            True, self.values)],
72                     out_words_ok=['test0', 'test1', 'test2',
73                                   'test3', 'test4'],
74                     out_words_no=['Random', 'control.export'])
75
76
77    def test_test_list_tests_exp(self):
78        self.run_cmd(argv=['atest', 'test', 'list', '--experimental'],
79                     rpcs=[('get_tests', {'experimental': True},
80                            True,
81                            [{u'description': u'Random stuff',
82                              u'test_type': CLIENT,
83                              u'test_class': u'Hardware',
84                              u'path': u'client/tests/test4/control.export',
85                              u'synch_type': u'Asynchronous',
86                              u'id': 143,
87                              u'name': u'test4',
88                              u'experimental': True}])],
89                     out_words_ok=['test4'],
90                     out_words_no=['Random', 'control.export'])
91
92
93    def test_test_list_tests_select_one(self):
94        filtered = [val for val in self.values if val['name'] in ['test3']]
95        self.run_cmd(argv=['atest', 'test', 'list', 'test3'],
96                     rpcs=[('get_tests', {'name__in': ['test3'],
97                                          'experimental': False},
98                            True, filtered)],
99                     out_words_ok=['test3'],
100                     out_words_no=['test0', 'test1', 'test2', 'test4',
101                                   'unknown'])
102
103
104    def test_test_list_tests_select_two(self):
105        filtered = [val for val in self.values
106                    if val['name'] in ['test3', 'test1']]
107        self.run_cmd(argv=['atest', 'test', 'list', 'test3,test1'],
108                     rpcs=[('get_tests', {'name__in': ['test1', 'test3'],
109                                          'experimental': False},
110                            True, filtered)],
111                     out_words_ok=['test3', 'test1', SERVER],
112                     out_words_no=['test0', 'test2', 'test4',
113                                   'unknown', CLIENT])
114
115
116    def test_test_list_tests_select_two_space(self):
117        filtered = [val for val in self.values
118                    if val['name'] in ['test3', 'test1']]
119        self.run_cmd(argv=['atest', 'test', 'list', 'test3', 'test1'],
120                     rpcs=[('get_tests', {'name__in': ['test1', 'test3'],
121                                          'experimental': False},
122                            True, filtered)],
123                     out_words_ok=['test3', 'test1', SERVER],
124                     out_words_no=['test0', 'test2', 'test4',
125                                   'unknown', CLIENT])
126
127
128    def test_test_list_tests_all_verbose(self):
129        self.run_cmd(argv=['atest', 'test', 'list', '-v'],
130                     rpcs=[('get_tests', {'experimental': False},
131                            True, self.values)],
132                     out_words_ok=['test0', 'test1', 'test2',
133                                   'test3', 'test4', 'client/tests',
134                                   'server/tests'],
135                     out_words_no=['Random'])
136
137
138    def test_test_list_tests_all_desc(self):
139        self.run_cmd(argv=['atest', 'test', 'list', '-d'],
140                     rpcs=[('get_tests', {'experimental': False},
141                            True, self.values)],
142                     out_words_ok=['test0', 'test1', 'test2',
143                                   'test3', 'test4', 'unknown', 'Random'],
144                     out_words_no=['client/tests', 'server/tests'])
145
146
147    def test_test_list_tests_all_desc_verbose(self):
148        self.run_cmd(argv=['atest', 'test', 'list', '-d', '-v'],
149                     rpcs=[('get_tests', {'experimental': False},
150                            True, self.values)],
151                     out_words_ok=['test0', 'test1', 'test2',
152                                   'test3', 'test4', 'client/tests',
153                                   'server/tests', 'unknown', 'Random' ])
154
155
156if __name__ == '__main__':
157    unittest.main()
158