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

Side by Side Diff: ios/build/bots/scripts/test_runner.py

Issue 2619813002: [ios] Updates test_runner.py to output a test results json file. (Closed)
Patch Set: Fixes. Created 3 years, 11 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 | « ios/build/bots/scripts/run.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 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Test runners for iOS.""" 5 """Test runners for iOS."""
6 6
7 import argparse 7 import argparse
8 import collections 8 import collections
9 import errno 9 import errno
10 import os 10 import os
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 '-c', 'Print:CFBundleIdentifier', 180 '-c', 'Print:CFBundleIdentifier',
181 os.path.join(app_path, 'Info.plist'), 181 os.path.join(app_path, 'Info.plist'),
182 ]).rstrip() 182 ]).rstrip()
183 self.env_vars = env_vars or [] 183 self.env_vars = env_vars or []
184 self.logs = collections.OrderedDict() 184 self.logs = collections.OrderedDict()
185 self.out_dir = out_dir 185 self.out_dir = out_dir
186 self.test_args = test_args or [] 186 self.test_args = test_args or []
187 self.xcode_version = xcode_version 187 self.xcode_version = xcode_version
188 self.xctest_path = '' 188 self.xctest_path = ''
189 189
190 self.test_results = {}
191 self.test_results['version'] = 3
192 self.test_results['path_delimiter'] = '.'
193 self.test_results['seconds_since_epoch'] = int(time.time())
194 # This will be overwritten when the tests complete successfully.
195 self.test_results['interrupted'] = True
196
190 if xctest: 197 if xctest:
191 plugins_dir = os.path.join(self.app_path, 'PlugIns') 198 plugins_dir = os.path.join(self.app_path, 'PlugIns')
192 if not os.path.exists(plugins_dir): 199 if not os.path.exists(plugins_dir):
193 raise PlugInsNotFoundError(plugins_dir) 200 raise PlugInsNotFoundError(plugins_dir)
194 for plugin in os.listdir(plugins_dir): 201 for plugin in os.listdir(plugins_dir):
195 if plugin.endswith('.xctest'): 202 if plugin.endswith('.xctest'):
196 self.xctest_path = os.path.join(plugins_dir, plugin) 203 self.xctest_path = os.path.join(plugins_dir, plugin)
197 if not os.path.exists(self.xctest_path): 204 if not os.path.exists(self.xctest_path):
198 raise XCTestPlugInNotFoundError(self.xctest_path) 205 raise XCTestPlugInNotFoundError(self.xctest_path)
199 206
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 passed.extend(result.passed_tests) 349 passed.extend(result.passed_tests)
343 failed.update(result.failed_tests) 350 failed.update(result.failed_tests)
344 flaked.update(result.flaked_tests) 351 flaked.update(result.flaked_tests)
345 except OSError as e: 352 except OSError as e:
346 if e.errno == errno.E2BIG: 353 if e.errno == errno.E2BIG:
347 print 'Too many test cases to resume.' 354 print 'Too many test cases to resume.'
348 print 355 print
349 else: 356 else:
350 raise 357 raise
351 358
359 # Build test_results.json.
360 self.test_results['interrupted'] = result.crashed
361 self.test_results['num_failures_by_type'] = {
362 'FAIL': len(failed) + len(flaked),
363 'PASS': len(passed),
364 }
365 tests = collections.OrderedDict()
366 for test in passed:
367 tests[test] = { 'expected': 'PASS', 'actual': 'PASS' }
368 for test in failed:
369 tests[test] = { 'expected': 'PASS', 'actual': 'FAIL' }
370 for test in flaked:
371 tests[test] = { 'expected': 'PASS', 'actual': 'FAIL' }
372 self.test_results['tests'] = tests
373
352 self.logs['passed tests'] = passed 374 self.logs['passed tests'] = passed
353 for test, log_lines in failed.iteritems(): 375 for test, log_lines in failed.iteritems():
354 self.logs[test] = log_lines 376 self.logs[test] = log_lines
355 for test, log_lines in flaked.iteritems(): 377 for test, log_lines in flaked.iteritems():
356 self.logs[test] = log_lines 378 self.logs[test] = log_lines
357 379
358 return not failed 380 return not failed
359 finally: 381 finally:
360 self.tear_down() 382 self.tear_down()
361 383
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 """ 740 """
719 env = super(DeviceTestRunner, self).get_launch_env() 741 env = super(DeviceTestRunner, self).get_launch_env()
720 if self.xctest_path: 742 if self.xctest_path:
721 env['NSUnbufferedIO'] = 'YES' 743 env['NSUnbufferedIO'] = 'YES'
722 # e.g. ios_web_shell_egtests 744 # e.g. ios_web_shell_egtests
723 env['APP_TARGET_NAME'] = os.path.splitext( 745 env['APP_TARGET_NAME'] = os.path.splitext(
724 os.path.basename(self.app_path))[0] 746 os.path.basename(self.app_path))[0]
725 # e.g. ios_web_shell_egtests_module 747 # e.g. ios_web_shell_egtests_module
726 env['TEST_TARGET_NAME'] = env['APP_TARGET_NAME'] + '_module' 748 env['TEST_TARGET_NAME'] = env['APP_TARGET_NAME'] + '_module'
727 return env 749 return env
OLDNEW
« no previous file with comments | « ios/build/bots/scripts/run.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698