| OLD | NEW |
| (Empty) |
| 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 logging | |
| 8 | |
| 9 from pylib.constants import host_paths | |
| 10 from pylib.linker import test_case | |
| 11 from pylib.linker import test_runner | |
| 12 | |
| 13 with host_paths.SysPath(host_paths.BUILD_COMMON_PATH): | |
| 14 import unittest_util # pylint: disable=import-error | |
| 15 | |
| 16 # ModernLinker requires Android M (API level 23) or later. | |
| 17 _VERSION_SDK_PROPERTY = 'ro.build.version.sdk' | |
| 18 _MODERN_LINKER_MINIMUM_SDK_INT = 23 | |
| 19 | |
| 20 def Setup(args, devices): | |
| 21 """Creates a list of test cases and a runner factory. | |
| 22 | |
| 23 Args: | |
| 24 args: an argparse.Namespace object. | |
| 25 devices: an iterable of available devices. | |
| 26 Returns: | |
| 27 A tuple of (TestRunnerFactory, tests). | |
| 28 """ | |
| 29 legacy_linker_tests = [ | |
| 30 test_case.LinkerSharedRelroTest(is_modern_linker=False, | |
| 31 is_low_memory=False), | |
| 32 test_case.LinkerSharedRelroTest(is_modern_linker=False, | |
| 33 is_low_memory=True), | |
| 34 ] | |
| 35 modern_linker_tests = [ | |
| 36 test_case.LinkerSharedRelroTest(is_modern_linker=True), | |
| 37 ] | |
| 38 | |
| 39 min_sdk_int = 1 << 31 | |
| 40 for device in devices: | |
| 41 min_sdk_int = min(min_sdk_int, device.build_version_sdk) | |
| 42 | |
| 43 if min_sdk_int >= _MODERN_LINKER_MINIMUM_SDK_INT: | |
| 44 all_tests = legacy_linker_tests + modern_linker_tests | |
| 45 else: | |
| 46 all_tests = legacy_linker_tests | |
| 47 logging.warn('Not running LinkerModern tests (requires API %d, found %d)', | |
| 48 _MODERN_LINKER_MINIMUM_SDK_INT, min_sdk_int) | |
| 49 | |
| 50 if args.test_filter: | |
| 51 all_test_names = [test.qualified_name for test in all_tests] | |
| 52 filtered_test_names = unittest_util.FilterTestNames(all_test_names, | |
| 53 args.test_filter) | |
| 54 all_tests = [t for t in all_tests \ | |
| 55 if t.qualified_name in filtered_test_names] | |
| 56 | |
| 57 def TestRunnerFactory(device, _shard_index): | |
| 58 return test_runner.LinkerTestRunner(device, args.tool) | |
| 59 | |
| 60 return (TestRunnerFactory, all_tests) | |
| OLD | NEW |