Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import re | 7 import re |
| 8 | 8 |
| 9 from pylib import pexpect | 9 from pylib import pexpect |
| 10 from pylib.base import base_test_result | 10 from pylib.base import base_test_result |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 63 Args: | 63 Args: |
| 64 p: An instance of pexpect spawn class. | 64 p: An instance of pexpect spawn class. |
| 65 | 65 |
| 66 Returns: | 66 Returns: |
| 67 A TestRunResults object. | 67 A TestRunResults object. |
| 68 """ | 68 """ |
| 69 results = base_test_result.TestRunResults() | 69 results = base_test_result.TestRunResults() |
| 70 | 70 |
| 71 # Test case statuses. | 71 # Test case statuses. |
| 72 re_run = re.compile('\[ RUN \] ?(.*)\r\n') | 72 re_run = re.compile('\[ RUN \] ?(.*)\r\n') |
| 73 re_fail = re.compile('\[ FAILED \] ?(.*)\r\n') | 73 re_fail = re.compile('\[ FAILED \] ?(.*?)( \((.*) ms\))?\r\r\n') |
|
jbudorick
2014/11/14 01:50:24
Narrow the second capture a little. What do you ex
| |
| 74 re_ok = re.compile('\[ OK \] ?(.*?) .*\r\n') | 74 re_ok = re.compile('\[ OK \] ?(.*?)( \((.*) ms\))?\r\r\n') |
| 75 | 75 |
| 76 # Test run statuses. | 76 # Test run statuses. |
| 77 re_passed = re.compile('\[ PASSED \] ?(.*)\r\n') | 77 re_passed = re.compile('\[ PASSED \] ?(.*)\r\n') |
| 78 re_runner_fail = re.compile('\[ RUNNER_FAILED \] ?(.*)\r\n') | 78 re_runner_fail = re.compile('\[ RUNNER_FAILED \] ?(.*)\r\n') |
| 79 # Signal handlers are installed before starting tests | 79 # Signal handlers are installed before starting tests |
| 80 # to output the CRASHED marker when a crash happens. | 80 # to output the CRASHED marker when a crash happens. |
| 81 re_crash = re.compile('\[ CRASHED \](.*)\r\n') | 81 re_crash = re.compile('\[ CRASHED \](.*)\r\n') |
| 82 | 82 |
| 83 log = '' | 83 log = '' |
| 84 try: | 84 try: |
| 85 while True: | 85 while True: |
| 86 full_test_name = None | 86 full_test_name = None |
| 87 | |
| 87 found = p.expect([re_run, re_passed, re_runner_fail], | 88 found = p.expect([re_run, re_passed, re_runner_fail], |
| 88 timeout=self._timeout) | 89 timeout=self._timeout) |
| 89 if found == 1: # re_passed | 90 if found == 1: # re_passed |
| 90 break | 91 break |
| 91 elif found == 2: # re_runner_fail | 92 elif found == 2: # re_runner_fail |
| 92 break | 93 break |
| 93 else: # re_run | 94 else: # re_run |
| 94 full_test_name = p.match.group(1).replace('\r', '') | 95 full_test_name = p.match.group(1).replace('\r', '') |
| 95 found = p.expect([re_ok, re_fail, re_crash], timeout=self._timeout) | 96 found = p.expect([re_ok, re_fail, re_crash], timeout=self._timeout) |
| 96 log = p.before.replace('\r', '') | 97 log = p.before.replace('\r', '') |
| 97 if found == 0: # re_ok | 98 if found == 0: # re_ok |
| 98 if full_test_name == p.match.group(1).replace('\r', ''): | 99 if full_test_name == p.match.group(1).replace('\r', ''): |
| 100 duration_ms = int(p.match.group(3)) if p.match.group(3) else 0 | |
| 99 results.AddResult(base_test_result.BaseTestResult( | 101 results.AddResult(base_test_result.BaseTestResult( |
| 100 full_test_name, base_test_result.ResultType.PASS, | 102 full_test_name, base_test_result.ResultType.PASS, |
| 101 log=log)) | 103 duration=duration_ms, log=log)) |
| 102 elif found == 2: # re_crash | 104 elif found == 2: # re_crash |
| 103 results.AddResult(base_test_result.BaseTestResult( | 105 results.AddResult(base_test_result.BaseTestResult( |
| 104 full_test_name, base_test_result.ResultType.CRASH, | 106 full_test_name, base_test_result.ResultType.CRASH, |
| 105 log=log)) | 107 log=log)) |
| 106 break | 108 break |
| 107 else: # re_fail | 109 else: # re_fail |
| 110 duration_ms = int(p.match.group(3)) if p.match.group(3) else 0 | |
| 108 results.AddResult(base_test_result.BaseTestResult( | 111 results.AddResult(base_test_result.BaseTestResult( |
| 109 full_test_name, base_test_result.ResultType.FAIL, log=log)) | 112 full_test_name, base_test_result.ResultType.FAIL, |
| 113 duration=duration_ms, log=log)) | |
| 110 except pexpect.EOF: | 114 except pexpect.EOF: |
| 111 logging.error('Test terminated - EOF') | 115 logging.error('Test terminated - EOF') |
| 112 # We're here because either the device went offline, or the test harness | 116 # We're here because either the device went offline, or the test harness |
| 113 # crashed without outputting the CRASHED marker (crbug.com/175538). | 117 # crashed without outputting the CRASHED marker (crbug.com/175538). |
| 114 if not self.device.IsOnline(): | 118 if not self.device.IsOnline(): |
| 115 raise device_errors.DeviceUnreachableError( | 119 raise device_errors.DeviceUnreachableError( |
| 116 'Device %s went offline.' % str(self.device)) | 120 'Device %s went offline.' % str(self.device)) |
| 117 if full_test_name: | 121 if full_test_name: |
| 118 results.AddResult(base_test_result.BaseTestResult( | 122 results.AddResult(base_test_result.BaseTestResult( |
| 119 full_test_name, base_test_result.ResultType.CRASH, | 123 full_test_name, base_test_result.ResultType.CRASH, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 171 self.tool.SetupEnvironment() | 175 self.tool.SetupEnvironment() |
| 172 | 176 |
| 173 #override | 177 #override |
| 174 def TearDown(self): | 178 def TearDown(self): |
| 175 """Cleans up the test enviroment for the test suite.""" | 179 """Cleans up the test enviroment for the test suite.""" |
| 176 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 180 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
| 177 self._perf_controller.SetDefaultPerfMode() | 181 self._perf_controller.SetDefaultPerfMode() |
| 178 self.test_package.ClearApplicationState(self.device) | 182 self.test_package.ClearApplicationState(self.device) |
| 179 self.tool.CleanUpEnvironment() | 183 self.tool.CleanUpEnvironment() |
| 180 super(TestRunner, self).TearDown() | 184 super(TestRunner, self).TearDown() |
| OLD | NEW |