# -*- 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++'

# suffixes: A list of file extensions to treat as test files, this is actually
# set by on_clone().
config.suffixes = []

# Reset these from the Clang config.
config.test_source_root = config.test_exec_root = None

# Don't run Clang and LLVM code checks by default.
config.excludes = []
if not lit.params.get('run_clang_all'):
    config.excludes.append('Clang-Code-Syntax')
    config.excludes.append('Clang-Code-Compile')
    config.excludes.append('LLVM-Code-Syntax')
    config.excludes.append('LLVM-Code-Compile')
    config.excludes.append('LLVM-Code-Symbols')
