Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: build/android/test_runner.py

Issue 23293006: [Android] Adds python option for EMMA coverage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removes GetCoverageDir Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/pylib/utils/command_option_parser.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Runs all types of tests from one unified interface. 7 """Runs all types of tests from one unified interface.
8 8
9 TODO(gkanwar): 9 TODO(gkanwar):
10 * Add options to run Monkey tests. 10 * Add options to run Monkey tests.
(...skipping 15 matching lines...) Expand all
26 from pylib.host_driven import setup as host_driven_setup 26 from pylib.host_driven import setup as host_driven_setup
27 from pylib.instrumentation import setup as instrumentation_setup 27 from pylib.instrumentation import setup as instrumentation_setup
28 from pylib.instrumentation import test_options as instrumentation_test_options 28 from pylib.instrumentation import test_options as instrumentation_test_options
29 from pylib.monkey import setup as monkey_setup 29 from pylib.monkey import setup as monkey_setup
30 from pylib.monkey import test_options as monkey_test_options 30 from pylib.monkey import test_options as monkey_test_options
31 from pylib.perf import setup as perf_setup 31 from pylib.perf import setup as perf_setup
32 from pylib.perf import test_options as perf_test_options 32 from pylib.perf import test_options as perf_test_options
33 from pylib.perf import test_runner as perf_test_runner 33 from pylib.perf import test_runner as perf_test_runner
34 from pylib.uiautomator import setup as uiautomator_setup 34 from pylib.uiautomator import setup as uiautomator_setup
35 from pylib.uiautomator import test_options as uiautomator_test_options 35 from pylib.uiautomator import test_options as uiautomator_test_options
36 from pylib.utils import command_option_parser
36 from pylib.utils import report_results 37 from pylib.utils import report_results
37 from pylib.utils import run_tests_helper 38 from pylib.utils import run_tests_helper
38 39
39 40
40 _SDK_OUT_DIR = os.path.join(constants.DIR_SOURCE_ROOT, 'out') 41 _SDK_OUT_DIR = os.path.join(constants.DIR_SOURCE_ROOT, 'out')
41 42
42 43
43 def AddBuildTypeOption(option_parser): 44 def AddBuildTypeOption(option_parser):
44 """Adds the build type option to |option_parser|.""" 45 """Adds the build type option to |option_parser|."""
45 default_build_type = 'Debug' 46 default_build_type = 'Debug'
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 option_parser.add_option('--host-driven-root', 222 option_parser.add_option('--host-driven-root',
222 help='Root of the host-driven tests.') 223 help='Root of the host-driven tests.')
223 option_parser.add_option('-w', '--wait_debugger', dest='wait_for_debugger', 224 option_parser.add_option('-w', '--wait_debugger', dest='wait_for_debugger',
224 action='store_true', 225 action='store_true',
225 help='Wait for debugger.') 226 help='Wait for debugger.')
226 option_parser.add_option( 227 option_parser.add_option(
227 '--test-apk', dest='test_apk', 228 '--test-apk', dest='test_apk',
228 help=('The name of the apk containing the tests ' 229 help=('The name of the apk containing the tests '
229 '(without the .apk extension; e.g. "ContentShellTest"). ' 230 '(without the .apk extension; e.g. "ContentShellTest"). '
230 'Alternatively, this can be a full path to the apk.')) 231 'Alternatively, this can be a full path to the apk.'))
232 option_parser.add_option('--coverage-dir',
233 help=('Directory in which to place all generated '
234 'EMMA coverage files.'))
231 235
232 236
233 def ProcessInstrumentationOptions(options, error_func): 237 def ProcessInstrumentationOptions(options, error_func):
234 """Processes options/arguments and populate |options| with defaults. 238 """Processes options/arguments and populate |options| with defaults.
235 239
236 Args: 240 Args:
237 options: optparse.Options object. 241 options: optparse.Options object.
238 error_func: Function to call with the error message in case of an error. 242 error_func: Function to call with the error message in case of an error.
239 243
240 Returns: 244 Returns:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 options.tool, 282 options.tool,
279 options.cleanup_test_files, 283 options.cleanup_test_files,
280 options.push_deps, 284 options.push_deps,
281 options.annotations, 285 options.annotations,
282 options.exclude_annotations, 286 options.exclude_annotations,
283 options.test_filter, 287 options.test_filter,
284 options.test_data, 288 options.test_data,
285 options.save_perf_json, 289 options.save_perf_json,
286 options.screenshot_failures, 290 options.screenshot_failures,
287 options.wait_for_debugger, 291 options.wait_for_debugger,
292 options.coverage_dir,
288 options.test_apk, 293 options.test_apk,
289 options.test_apk_path, 294 options.test_apk_path,
290 options.test_apk_jar_path) 295 options.test_apk_jar_path)
291 296
292 297
293 def AddUIAutomatorTestOptions(option_parser): 298 def AddUIAutomatorTestOptions(option_parser):
294 """Adds UI Automator test options to |option_parser|.""" 299 """Adds UI Automator test options to |option_parser|."""
295 300
296 option_parser.usage = '%prog uiautomator [options]' 301 option_parser.usage = '%prog uiautomator [options]'
297 option_parser.command_list = [] 302 option_parser.command_list = []
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 'uiautomator': CommandFunctionTuple( 699 'uiautomator': CommandFunctionTuple(
695 AddUIAutomatorTestOptions, RunTestsCommand), 700 AddUIAutomatorTestOptions, RunTestsCommand),
696 'monkey': CommandFunctionTuple( 701 'monkey': CommandFunctionTuple(
697 AddMonkeyTestOptions, RunTestsCommand), 702 AddMonkeyTestOptions, RunTestsCommand),
698 'perf': CommandFunctionTuple( 703 'perf': CommandFunctionTuple(
699 AddPerfTestOptions, RunTestsCommand), 704 AddPerfTestOptions, RunTestsCommand),
700 'help': CommandFunctionTuple(lambda option_parser: None, HelpCommand) 705 'help': CommandFunctionTuple(lambda option_parser: None, HelpCommand)
701 } 706 }
702 707
703 708
704 class CommandOptionParser(optparse.OptionParser):
705 """Wrapper class for OptionParser to help with listing commands."""
706
707 def __init__(self, *args, **kwargs):
708 self.command_list = kwargs.pop('command_list', [])
709 self.example = kwargs.pop('example', '')
710 optparse.OptionParser.__init__(self, *args, **kwargs)
711
712 #override
713 def get_usage(self):
714 normal_usage = optparse.OptionParser.get_usage(self)
715 command_list = self.get_command_list()
716 example = self.get_example()
717 return self.expand_prog_name(normal_usage + example + command_list)
718
719 #override
720 def get_command_list(self):
721 if self.command_list:
722 return '\nCommands:\n %s\n' % '\n '.join(sorted(self.command_list))
723 return ''
724
725 def get_example(self):
726 if self.example:
727 return '\nExample:\n %s\n' % self.example
728 return ''
729
730
731 def main(argv): 709 def main(argv):
732 option_parser = CommandOptionParser( 710 option_parser = command_option_parser.CommandOptionParser(
733 usage='Usage: %prog <command> [options]', 711 commands_dict=VALID_COMMANDS)
734 command_list=VALID_COMMANDS.keys()) 712 return command_option_parser.ParseAndExecute(option_parser)
735
736 if len(argv) < 2 or argv[1] not in VALID_COMMANDS:
737 # Parse args first, if this is '--help', optparse will display help and exit
738 option_parser.parse_args(argv)
739 option_parser.error('Invalid command.')
740 command = argv[1]
741 VALID_COMMANDS[command].add_options_func(option_parser)
742 options, args = option_parser.parse_args(argv)
743 return VALID_COMMANDS[command].run_command_func(
744 command, options, args, option_parser)
745 713
746 714
747 if __name__ == '__main__': 715 if __name__ == '__main__':
748 sys.exit(main(sys.argv)) 716 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « build/android/pylib/utils/command_option_parser.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698