Home | History | Annotate | Download | only in linker
      1 # Copyright 2013 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 """Setup for linker tests."""
      6 
      7 import os
      8 import sys
      9 
     10 from pylib import constants
     11 from pylib.linker import test_case
     12 from pylib.linker import test_runner
     13 
     14 sys.path.insert(0,
     15                 os.path.join(constants.DIR_SOURCE_ROOT, 'build', 'util', 'lib',
     16                              'common'))
     17 import unittest_util # pylint: disable=F0401
     18 
     19 def Setup(options, _devices):
     20   """Creates a list of test cases and a runner factory.
     21 
     22   Returns:
     23     A tuple of (TestRunnerFactory, tests).
     24   """
     25   test_cases = [
     26       test_case.LinkerLibraryAddressTest,
     27       test_case.LinkerSharedRelroTest,
     28       test_case.LinkerRandomizationTest ]
     29 
     30   low_memory_modes = [False, True]
     31   all_tests = [t(is_low_memory=m) for t in test_cases for m in low_memory_modes]
     32 
     33   if options.test_filter:
     34     all_test_names = [ test.qualified_name for test in all_tests ]
     35     filtered_test_names = unittest_util.FilterTestNames(all_test_names,
     36                                                         options.test_filter)
     37     all_tests = [t for t in all_tests \
     38                  if t.qualified_name in filtered_test_names]
     39 
     40   def TestRunnerFactory(device, _shard_index):
     41     return test_runner.LinkerTestRunner(
     42         device, options.tool, options.push_deps,
     43         options.cleanup_test_files)
     44 
     45   return (TestRunnerFactory, all_tests)
     46