1*9c5db199SXin Li# 2*9c5db199SXin Li# Copyright 2008 Google Inc. All Rights Reserved. 3*9c5db199SXin Li 4*9c5db199SXin Li""" 5*9c5db199SXin LiThe test module contains the objects and methods used to 6*9c5db199SXin Limanage tests in Autotest. 7*9c5db199SXin Li 8*9c5db199SXin LiThe valid action is: 9*9c5db199SXin Lilist: lists test(s) 10*9c5db199SXin Li 11*9c5db199SXin LiThe common options are: 12*9c5db199SXin Li--tlist / -T: file containing a list of tests 13*9c5db199SXin Li 14*9c5db199SXin LiSee topic_common.py for a High Level Design and Algorithm. 15*9c5db199SXin Li""" 16*9c5db199SXin Li 17*9c5db199SXin Li 18*9c5db199SXin Liimport os, sys 19*9c5db199SXin Li 20*9c5db199SXin Lifrom autotest_lib.cli import topic_common, action_common 21*9c5db199SXin Li 22*9c5db199SXin Li 23*9c5db199SXin Liclass test(topic_common.atest): 24*9c5db199SXin Li """Test class 25*9c5db199SXin Li atest test list <options>""" 26*9c5db199SXin Li usage_action = 'list' 27*9c5db199SXin Li topic = msg_topic = 'test' 28*9c5db199SXin Li msg_items = '[tests]' 29*9c5db199SXin Li 30*9c5db199SXin Li def __init__(self): 31*9c5db199SXin Li """Add to the parser the options common to all the test actions""" 32*9c5db199SXin Li super(test, self).__init__() 33*9c5db199SXin Li 34*9c5db199SXin Li self.parser.add_option('-T', '--tlist', 35*9c5db199SXin Li help='File listing the tests', 36*9c5db199SXin Li type='string', 37*9c5db199SXin Li default=None, 38*9c5db199SXin Li metavar='TEST_FLIST') 39*9c5db199SXin Li 40*9c5db199SXin Li self.topic_parse_info = topic_common.item_parse_info( 41*9c5db199SXin Li attribute_name='tests', 42*9c5db199SXin Li filename_option='tlist', 43*9c5db199SXin Li use_leftover=True) 44*9c5db199SXin Li 45*9c5db199SXin Li 46*9c5db199SXin Li def get_items(self): 47*9c5db199SXin Li return self.tests 48*9c5db199SXin Li 49*9c5db199SXin Li 50*9c5db199SXin Liclass test_help(test): 51*9c5db199SXin Li """Just here to get the atest logic working. 52*9c5db199SXin Li Usage is set by its parent""" 53*9c5db199SXin Li pass 54*9c5db199SXin Li 55*9c5db199SXin Li 56*9c5db199SXin Liclass test_list(action_common.atest_list, test): 57*9c5db199SXin Li """atest test list [--description] [--experimental|--all] [<tests>]""" 58*9c5db199SXin Li def __init__(self): 59*9c5db199SXin Li super(test_list, self).__init__() 60*9c5db199SXin Li 61*9c5db199SXin Li self.parser.add_option('-d', '--description', 62*9c5db199SXin Li help='Display the test descriptions', 63*9c5db199SXin Li action='store_true', 64*9c5db199SXin Li default=False) 65*9c5db199SXin Li self.parser.add_option('--all', 66*9c5db199SXin Li help='Display all the tests', 67*9c5db199SXin Li action='store_true', 68*9c5db199SXin Li default=False) 69*9c5db199SXin Li self.parser.add_option('-e', '--experimental', 70*9c5db199SXin Li help='Display the experimental tests only', 71*9c5db199SXin Li action='store_true', 72*9c5db199SXin Li default=False) 73*9c5db199SXin Li 74*9c5db199SXin Li 75*9c5db199SXin Li def parse(self): 76*9c5db199SXin Li (options, leftover) = super(test_list, self).parse() 77*9c5db199SXin Li 78*9c5db199SXin Li if self.tests and (options.experimental or options.all): 79*9c5db199SXin Li self.invalid_syntax('Do not specify a test name with --all or ' 80*9c5db199SXin Li '--experimental') 81*9c5db199SXin Li 82*9c5db199SXin Li self.description = options.description 83*9c5db199SXin Li self.all = options.all 84*9c5db199SXin Li self.experimental = options.experimental 85*9c5db199SXin Li 86*9c5db199SXin Li return (options, leftover) 87*9c5db199SXin Li 88*9c5db199SXin Li 89*9c5db199SXin Li def execute(self): 90*9c5db199SXin Li filters = {} 91*9c5db199SXin Li check_results = {} 92*9c5db199SXin Li if self.tests: 93*9c5db199SXin Li filters['name__in'] = self.tests 94*9c5db199SXin Li check_results['name__in'] = 'name' 95*9c5db199SXin Li 96*9c5db199SXin Li if not self.all: 97*9c5db199SXin Li filters['experimental'] = self.experimental 98*9c5db199SXin Li check_results['experimental'] = None 99*9c5db199SXin Li 100*9c5db199SXin Li return super(test_list, self).execute(op='get_tests', 101*9c5db199SXin Li filters=filters, 102*9c5db199SXin Li check_results=check_results) 103*9c5db199SXin Li 104*9c5db199SXin Li 105*9c5db199SXin Li def output(self, results): 106*9c5db199SXin Li keys = ['name', 'test_type', 'test_class'] 107*9c5db199SXin Li 108*9c5db199SXin Li if self.all: 109*9c5db199SXin Li keys.append('experimental') 110*9c5db199SXin Li 111*9c5db199SXin Li if self.verbose: 112*9c5db199SXin Li keys.append('path') 113*9c5db199SXin Li 114*9c5db199SXin Li if self.description: 115*9c5db199SXin Li keys.append('description') 116*9c5db199SXin Li 117*9c5db199SXin Li super(test_list, self).output(results, keys) 118