# -*- Python -*-

# Configuration file for the 'lit' test runner.

# Load the main clang test config so we can leech its clang finding logic.
lit.load_config(config, os.path.join(os.path.dirname(__file__),
                                     '..', '..', 'test', 'lit.cfg'))
assert config.clang, "Failed to set clang!?"

# name: The name of this test suite.
config.name = 'Clang-Opt-Tests'

# suffixes: A list of file extensions to treat as test files.
config.suffixes = []

# Reset these from the Clang config.

# test_source_root: The root path where tests are located.
config.test_source_root = os.path.dirname(__file__)

# test_exec_root: The root path where tests should be run.
clang_obj_root = getattr(config, 'clang_obj_root', None)
if clang_obj_root is not None:
    config.test_exec_root = os.path.join(clang_obj_root, 'utils',
                                         'OptionalTests')

