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

Side by Side Diff: mojo/tools/apptest_runner.py

Issue 1174993002: Fixes viewmanager tests on android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment Created 5 years, 6 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """A test runner for gtest application tests.""" 6 """A test runner for gtest application tests."""
7 7
8 import argparse 8 import argparse
9 import json 9 import json
10 import logging 10 import logging
11 import os 11 import os
12 import sys 12 import sys
13 import time 13 import time
14 14
15 from mopy import gtest 15 from mopy import gtest
16 from mopy.config import Config 16 from mopy.config import Config
17 17
18 18
19 def main(): 19 def main():
20 parser = argparse.ArgumentParser(description="An application test runner.") 20 parser = argparse.ArgumentParser(description="An application test runner.")
21 parser.add_argument("test_list_file", type=file, 21 parser.add_argument("test_list_file", type=file,
22 help="a file listing apptests to run") 22 help="a file listing apptests to run")
23 parser.add_argument("build_dir", type=str, help="the build output directory") 23 parser.add_argument("build_dir", type=str, help="the build output directory")
24 parser.add_argument("--verbose", default=False, action='store_true') 24 parser.add_argument("--verbose", default=False, action='store_true')
25 parser.add_argument('--repeat_count', default=1, metavar='INT',
26 action='store', type=int)
25 parser.add_argument('--write-full-results-to', metavar='FILENAME', 27 parser.add_argument('--write-full-results-to', metavar='FILENAME',
26 help='Path to write the JSON list of full results.') 28 help='Path to write the JSON list of full results.')
27 args = parser.parse_args() 29 args = parser.parse_args()
28 30
29 gtest.set_color() 31 gtest.set_color()
30 logger = logging.getLogger() 32 logger = logging.getLogger()
31 logging.basicConfig(stream=sys.stdout, format="%(levelname)s:%(message)s") 33 logging.basicConfig(stream=sys.stdout, format="%(levelname)s:%(message)s")
32 logger.setLevel(logging.DEBUG if args.verbose else logging.WARNING) 34 logger.setLevel(logging.DEBUG if args.verbose else logging.WARNING)
33 logger.debug("Initialized logging: level=%s" % logger.level) 35 logger.debug("Initialized logging: level=%s" % logger.level)
34 36
35 logger.debug("Test list file: %s", args.test_list_file) 37 logger.debug("Test list file: %s", args.test_list_file)
36 config = Config(args.build_dir) 38 config = Config(args.build_dir)
37 execution_globals = {"config": config} 39 execution_globals = {"config": config}
38 exec args.test_list_file in execution_globals 40 exec args.test_list_file in execution_globals
39 test_list = execution_globals["tests"] 41 test_list = execution_globals["tests"]
40 logger.debug("Test list: %s" % test_list) 42 logger.debug("Test list: %s" % test_list)
41 43
42 shell = None 44 shell = None
43 if config.target_os == Config.OS_ANDROID: 45 if config.target_os == Config.OS_ANDROID:
44 from mopy.android import AndroidShell 46 from mopy.android import AndroidShell
45 shell = AndroidShell(config) 47 shell = AndroidShell(config)
46 result = shell.InitShell() 48 result = shell.InitShell()
47 if result != 0: 49 if result != 0:
48 return result 50 return result
49 51
50 tests = [] 52 tests = []
51 passed = [] 53 passed = []
52 failed = [] 54 failed = []
53 for test_dict in test_list: 55 for _ in range(args.repeat_count):
54 test = test_dict["test"] 56 for test_dict in test_list:
55 test_name = test_dict.get("name", test) 57 test = test_dict["test"]
56 test_type = test_dict.get("type", "gtest") 58 test_name = test_dict.get("name", test)
57 test_args = test_dict.get("args", []) 59 test_type = test_dict.get("type", "gtest")
60 test_args = test_dict.get("args", [])
58 61
59 print "Running %s...%s" % (test_name, ("\n" if args.verbose else "")), 62 print "Running %s...%s" % (test_name, ("\n" if args.verbose else "")),
60 sys.stdout.flush() 63 sys.stdout.flush()
61 64
62 tests.append(test_name) 65 tests.append(test_name)
63 assert test_type in ("gtest", "gtest_isolated") 66 assert test_type in ("gtest", "gtest_isolated")
64 isolate = test_type == "gtest_isolated" 67 isolate = test_type == "gtest_isolated"
65 result = gtest.run_apptest(config, shell, test_args, test, isolate) 68 result = gtest.run_apptest(config, shell, test_args, test, isolate)
66 passed.extend([test_name] if result else []) 69 passed.extend([test_name] if result else [])
67 failed.extend([] if result else [test_name]) 70 failed.extend([] if result else [test_name])
68 print "[ PASSED ]" if result else "[ FAILED ]", 71 print "[ PASSED ]" if result else "[ FAILED ]",
69 print test_name if args.verbose or not result else "" 72 print test_name if args.verbose or not result else ""
73
74 if failed:
75 break;
70 76
71 print "[ PASSED ] %d apptests" % len(passed), 77 print "[ PASSED ] %d apptests" % len(passed),
72 print ": %s" % ", ".join(passed) if passed else "" 78 print ": %s" % ", ".join(passed) if passed else ""
73 print "[ FAILED ] %d apptests" % len(failed), 79 print "[ FAILED ] %d apptests" % len(failed),
74 print ": %s" % ", ".join(failed) if failed else "" 80 print ": %s" % ", ".join(failed) if failed else ""
75 81
76 if args.write_full_results_to: 82 if args.write_full_results_to:
77 _WriteJSONResults(tests, failed, args.write_full_results_to) 83 _WriteJSONResults(tests, failed, args.write_full_results_to)
78 84
79 return 1 if failed else 0 85 return 1 if failed else 0
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 trie[path] = value 124 trie[path] = value
119 return 125 return
120 directory, rest = path.split('.', 1) 126 directory, rest = path.split('.', 1)
121 if directory not in trie: 127 if directory not in trie:
122 trie[directory] = {} 128 trie[directory] = {}
123 _AddPathToTrie(trie[directory], rest, value) 129 _AddPathToTrie(trie[directory], rest, value)
124 130
125 131
126 if __name__ == '__main__': 132 if __name__ == '__main__':
127 sys.exit(main()) 133 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698