14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)"""Setup for linker tests."""
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import os
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import sys
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import types
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import test_case
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import test_runner
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)from pylib import constants
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)sys.path.insert(0,
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                os.path.join(constants.DIR_SOURCE_ROOT, 'build', 'util', 'lib',
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             'common'))
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import unittest_util
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)def Setup(options, devices):
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  """Creates a list of test cases and a runner factory.
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Returns:
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    A tuple of (TestRunnerFactory, tests).
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  """
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  test_cases = [
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      test_case.LinkerLibraryAddressTest,
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      test_case.LinkerSharedRelroTest,
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      test_case.LinkerRandomizationTest ]
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  low_memory_modes = [False, True]
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  all_tests = [t(is_low_memory=m) for t in test_cases for m in low_memory_modes]
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if options.test_filter:
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    all_test_names = [ test.qualified_name for test in all_tests ]
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    filtered_test_names = unittest_util.FilterTestNames(all_test_names,
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                                        options.test_filter)
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    all_tests = [t for t in all_tests \
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                 if t.qualified_name in filtered_test_names]
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  def TestRunnerFactory(device, shard_index):
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    return test_runner.LinkerTestRunner(
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        device, options.tool, options.push_deps,
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        options.cleanup_test_files)
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return (TestRunnerFactory, all_tests)
48