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