| # | |
| # Copyright 2008 Google Inc. All Rights Reserved. | |
| """ | |
| The test module contains the objects and methods used to | |
| manage tests in Autotest. | |
| The valid action is: | |
| list: lists test(s) | |
| The common options are: | |
| --tlist / -T: file containing a list of tests | |
| See topic_common.py for a High Level Design and Algorithm. | |
| """ | |
| import os, sys | |
| from autotest_lib.cli import topic_common, action_common | |
| class test(topic_common.atest): | |
| """Test class | |
| atest test list <options>""" | |
| usage_action = 'list' | |
| topic = msg_topic = 'test' | |
| msg_items = '[tests]' | |
| def __init__(self): | |
| """Add to the parser the options common to all the test actions""" | |
| super(test, self).__init__() | |
| self.parser.add_option('-T', '--tlist', | |
| help='File listing the tests', | |
| type='string', | |
| default=None, | |
| metavar='TEST_FLIST') | |
| self.topic_parse_info = topic_common.item_parse_info( | |
| attribute_name='tests', | |
| filename_option='tlist', | |
| use_leftover=True) | |
| def get_items(self): | |
| return self.tests | |
| class test_help(test): | |
| """Just here to get the atest logic working. | |
| Usage is set by its parent""" | |
| pass | |
| class test_list(action_common.atest_list, test): | |
| """atest test list [--description] [--experimental|--all] [<tests>]""" | |
| def __init__(self): | |
| super(test_list, self).__init__() | |
| self.parser.add_option('-d', '--description', | |
| help='Display the test descriptions', | |
| action='store_true', | |
| default=False) | |
| self.parser.add_option('--all', | |
| help='Display all the tests', | |
| action='store_true', | |
| default=False) | |
| self.parser.add_option('-e', '--experimental', | |
| help='Display the experimental tests only', | |
| action='store_true', | |
| default=False) | |
| def parse(self): | |
| (options, leftover) = super(test_list, self).parse() | |
| if self.tests and (options.experimental or options.all): | |
| self.invalid_syntax('Do not specify a test name with --all or ' | |
| '--experimental') | |
| self.description = options.description | |
| self.all = options.all | |
| self.experimental = options.experimental | |
| return (options, leftover) | |
| def execute(self): | |
| filters = {} | |
| check_results = {} | |
| if self.tests: | |
| filters['name__in'] = self.tests | |
| check_results['name__in'] = 'name' | |
| if not self.all: | |
| filters['experimental'] = self.experimental | |
| check_results['experimental'] = None | |
| return super(test_list, self).execute(op='get_tests', | |
| filters=filters, | |
| check_results=check_results) | |
| def output(self, results): | |
| keys = ['name', 'test_type', 'test_class'] | |
| if self.all: | |
| keys.append('experimental') | |
| if self.verbose: | |
| keys.append('path') | |
| if self.description: | |
| keys.append('description') | |
| super(test_list, self).output(results, keys) |