Home | History | Annotate | Download | only in gtest
      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
      3 # found in the LICENSE file.
      4 
      5 """Base class representing GTest test packages."""
      6 # pylint: disable=R0201
      7 
      8 
      9 class TestPackage(object):
     10 
     11   """A helper base class for both APK and stand-alone executables.
     12 
     13   Args:
     14     suite_name: Name of the test suite (e.g. base_unittests).
     15   """
     16   def __init__(self, suite_name):
     17     self.suite_name = suite_name
     18 
     19   def ClearApplicationState(self, device):
     20     """Clears the application state.
     21 
     22     Args:
     23       device: Instance of DeviceUtils.
     24     """
     25     raise NotImplementedError('Method must be overriden.')
     26 
     27   def CreateCommandLineFileOnDevice(self, device, test_filter, test_arguments):
     28     """Creates a test runner script and pushes to the device.
     29 
     30     Args:
     31       device: Instance of DeviceUtils.
     32       test_filter: A test_filter flag.
     33       test_arguments: Additional arguments to pass to the test binary.
     34     """
     35     raise NotImplementedError('Method must be overriden.')
     36 
     37   def GetAllTests(self, device):
     38     """Returns a list of all tests available in the test suite.
     39 
     40     Args:
     41       device: Instance of DeviceUtils.
     42     """
     43     raise NotImplementedError('Method must be overriden.')
     44 
     45   def GetGTestReturnCode(self, _device):
     46     return None
     47 
     48   def SpawnTestProcess(self, device):
     49     """Spawn the test process.
     50 
     51     Args:
     52       device: Instance of DeviceUtils.
     53 
     54     Returns:
     55       An instance of pexpect spawn class.
     56     """
     57     raise NotImplementedError('Method must be overriden.')
     58 
     59   def Install(self, device):
     60     """Install the test package to the device.
     61 
     62     Args:
     63       device: Instance of DeviceUtils.
     64     """
     65     raise NotImplementedError('Method must be overriden.')
     66 
     67   @staticmethod
     68   def _ParseGTestListTests(raw_list):
     69     """Parses a raw test list as provided by --gtest_list_tests.
     70 
     71     Args:
     72       raw_list: The raw test listing with the following format:
     73 
     74       IPCChannelTest.
     75         SendMessageInChannelConnected
     76       IPCSyncChannelTest.
     77         Simple
     78         DISABLED_SendWithTimeoutMixedOKAndTimeout
     79 
     80     Returns:
     81       A list of all tests. For the above raw listing:
     82 
     83       [IPCChannelTest.SendMessageInChannelConnected, IPCSyncChannelTest.Simple,
     84        IPCSyncChannelTest.DISABLED_SendWithTimeoutMixedOKAndTimeout]
     85     """
     86     ret = []
     87     current = ''
     88     for test in raw_list:
     89       if not test:
     90         continue
     91       if test[0] != ' ':
     92         test_case = test.split()[0]
     93         if test_case.endswith('.'):
     94           current = test_case
     95       elif not 'YOU HAVE' in test:
     96         test_name = test.split()[0]
     97         ret += [current + test_name]
     98     return ret
     99