| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Base class representing GTest test packages.""" |
| |
| import logging |
| |
| |
| class TestPackage(object): |
| |
| """A helper base class for both APK and stand-alone executables. |
| |
| Args: |
| suite_name: Name of the test suite (e.g. base_unittests). |
| """ |
| def __init__(self, suite_name): |
| self.suite_name = suite_name |
| |
| def ClearApplicationState(self, adb): |
| """Clears the application state. |
| |
| Args: |
| adb: Instance of AndroidCommands. |
| """ |
| raise NotImplementedError('Method must be overriden.') |
| |
| def CreateCommandLineFileOnDevice(self, adb, test_filter, test_arguments): |
| """Creates a test runner script and pushes to the device. |
| |
| Args: |
| adb: Instance of AndroidCommands. |
| test_filter: A test_filter flag. |
| test_arguments: Additional arguments to pass to the test binary. |
| """ |
| raise NotImplementedError('Method must be overriden.') |
| |
| def GetAllTests(self, adb): |
| """Returns a list of all tests available in the test suite. |
| |
| Args: |
| adb: Instance of AndroidCommands. |
| """ |
| raise NotImplementedError('Method must be overriden.') |
| |
| def GetGTestReturnCode(self, adb): |
| return None |
| |
| def SpawnTestProcess(self, adb): |
| """Spawn the test process. |
| |
| Args: |
| adb: Instance of AndroidCommands. |
| |
| Returns: |
| An instance of pexpect spawn class. |
| """ |
| raise NotImplementedError('Method must be overriden.') |
| |
| def Install(self, adb): |
| """Install the test package to the device. |
| |
| Args: |
| adb: Instance of AndroidCommands. |
| """ |
| raise NotImplementedError('Method must be overriden.') |
| |
| def _ParseGTestListTests(self, raw_list): |
| """Parses a raw test list as provided by --gtest_list_tests. |
| |
| Args: |
| raw_list: The raw test listing with the following format: |
| |
| IPCChannelTest. |
| SendMessageInChannelConnected |
| IPCSyncChannelTest. |
| Simple |
| DISABLED_SendWithTimeoutMixedOKAndTimeout |
| |
| Returns: |
| A list of all tests. For the above raw listing: |
| |
| [IPCChannelTest.SendMessageInChannelConnected, IPCSyncChannelTest.Simple, |
| IPCSyncChannelTest.DISABLED_SendWithTimeoutMixedOKAndTimeout] |
| """ |
| ret = [] |
| current = '' |
| for test in raw_list: |
| if not test: |
| continue |
| if test[0] != ' ' and not test.endswith('.'): |
| # Ignore any lines with unexpected format. |
| continue |
| if test[0] != ' ' and test.endswith('.'): |
| current = test |
| continue |
| if 'YOU HAVE' in test: |
| break |
| test_name = test[2:] |
| ret += [current + test_name] |
| return ret |