Index: lldb/lit/API/README.md =================================================================== --- /dev/null +++ lldb/lit/API/README.md @@ -0,0 +1,4 @@ +# LLDB API Tests + +This directory only exists for the lit test driver. The actual tests live in +the `tests` directory in top level LLDB directory. Index: lldb/lit/API/lit.cfg =================================================================== --- lldb/lit/API/lit.cfg +++ lldb/lit/API/lit.cfg @@ -9,7 +9,7 @@ import lit.formats # name: The name of this test suite. -config.name = 'lldb-Suite' +config.name = 'lldb-api' # suffixes: A list of file extensions to treat as test files. config.suffixes = ['.py'] @@ -73,7 +73,7 @@ dotest_cmd += ['--module-cache-dir', config.lldb_module_cache] # Load LLDB test format. -sys.path.append(os.path.join(config.lldb_src_root, "lit", "Suite")) +sys.path.append(os.path.join(config.lldb_src_root, "lit", "API")) import lldbtest # testFormat: The test format to use to interpret tests. Index: lldb/lit/API/lit.site.cfg.in =================================================================== --- lldb/lit/API/lit.site.cfg.in +++ lldb/lit/API/lit.site.cfg.in @@ -43,4 +43,4 @@ lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key)) # Let the main config do the real work. -lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/Suite/lit.cfg") +lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/API/lit.cfg") Index: lldb/lit/CMakeLists.txt =================================================================== --- lldb/lit/CMakeLists.txt +++ lldb/lit/CMakeLists.txt @@ -75,22 +75,22 @@ LLDB_IS_64_BITS) configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in - ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py + ${CMAKE_CURRENT_SOURCE_DIR}/Shell/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/Shell/lit.site.cfg.py MAIN_CONFIG - ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py) + ${CMAKE_CURRENT_SOURCE_DIR}/Shell/lit.cfg.py) configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py MAIN_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py) configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/Suite/lit.site.cfg.in - ${CMAKE_CURRENT_BINARY_DIR}/Suite/lit.site.cfg) + ${CMAKE_CURRENT_SOURCE_DIR}/API/lit.site.cfg.in + ${CMAKE_CURRENT_BINARY_DIR}/API/lit.site.cfg) configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/lit-lldb-init.in - ${CMAKE_CURRENT_BINARY_DIR}/lit-lldb-init) + ${CMAKE_CURRENT_SOURCE_DIR}/Shell/lit-lldb-init.in + ${CMAKE_CURRENT_BINARY_DIR}/Shell/lit-lldb-init) if(NOT LLDB_BUILT_STANDALONE) list(APPEND LLDB_TEST_DEPS Index: lldb/lit/Shell/Python/crashlog.test =================================================================== --- lldb/lit/Shell/Python/crashlog.test +++ lldb/lit/Shell/Python/crashlog.test @@ -1,6 +1,6 @@ # -*- python -*- # REQUIRES: system-darwin -# RUN: cd %S/../../examples/python && cat %s | %lldb | FileCheck %s +# RUN: cd %S/../../../examples/python && cat %s | %lldb | FileCheck %s # CHECK-LABEL: {{S}}KIP BEYOND CHECKS script import crashlog @@ -44,7 +44,7 @@ # CHECK: (0) # CHECK: 01234 # CHECK: /tmp/MyApp Pro.app/MyApp Pro - + "0x7fff63f20000 - 0x7fff63f77ff7 libc++.1.dylib (400.9.4) /usr/lib/libc++.1.dylib" # CHECK: 0x7fff63f20000 # CHECK: 0x7fff63f77ff7 Index: lldb/lit/Shell/helper/toolchain.py =================================================================== --- lldb/lit/Shell/helper/toolchain.py +++ lldb/lit/Shell/helper/toolchain.py @@ -29,7 +29,7 @@ if config.llvm_libs_dir: build_script_args.append('--libs-dir={0}'.format(config.llvm_libs_dir)) - lldb_init = os.path.join(config.test_exec_root, 'lit-lldb-init') + lldb_init = os.path.join(config.test_exec_root, 'Shell', 'lit-lldb-init') primary_tools = [ ToolSubst('%lldb', Index: lldb/lit/Shell/lit.cfg.py =================================================================== --- /dev/null +++ lldb/lit/Shell/lit.cfg.py @@ -0,0 +1,107 @@ +# -*- Python -*- + +import os +import platform +import re +import shutil +import site +import sys + +import lit.formats +from lit.llvm import llvm_config +from lit.llvm.subst import FindTool +from lit.llvm.subst import ToolSubst +from distutils.spawn import find_executable + +site.addsitedir(os.path.dirname(__file__)) +from helper import toolchain + +# name: The name of this test suite. +config.name = 'lldb-shell' + +# testFormat: The test format to use to interpret tests. +config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell) + +# suffixes: A list of file extensions to treat as test files. This is overriden +# by individual lit.local.cfg files in the test subdirectories. +config.suffixes = ['.test', '.cpp', '.s'] + +# excludes: A list of directories to exclude from the testsuite. The 'Inputs' +# subdirectories contain auxiliary inputs for various tests in their parent +# directories. +config.excludes = ['Inputs', 'CMakeLists.txt', 'README.txt', 'LICENSE.txt'] + +# 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. +config.test_exec_root = os.path.join(config.lldb_obj_root, 'lit') + + +llvm_config.use_default_substitutions() + +toolchain.use_lldb_substitutions(config) + +toolchain.use_support_substitutions(config) + + +if re.match(r'^arm(hf.*-linux)|(.*-linux-gnuabihf)', config.target_triple): + config.available_features.add("armhf-linux") + +def calculate_arch_features(arch_string): + # This will add a feature such as x86, arm, mips, etc for each built + # target + features = [] + for arch in arch_string.split(): + features.append(arch.lower()) + return features + +# Run llvm-config and add automatically add features for whether we have +# assertions enabled, whether we are in debug mode, and what targets we +# are built for. +llvm_config.feature_config( + [('--assertion-mode', {'ON': 'asserts'}), + ('--build-mode', {'DEBUG': 'debug'}), + ('--targets-built', calculate_arch_features) + ]) + +# Clean the module caches in the test build directory. This is necessary in an +# incremental build whenever clang changes underneath, so doing it once per +# lit.py invocation is close enough. +for cachedir in [config.clang_module_cache, config.lldb_module_cache]: + if os.path.isdir(cachedir): + print("Deleting module cache at %s."%cachedir) + shutil.rmtree(cachedir) + +# Set a default per-test timeout of 10 minutes. Setting a timeout per test +# requires that killProcessAndChildren() is supported on the platform and +# lit complains if the value is set but it is not supported. +supported, errormsg = lit_config.maxIndividualTestTimeIsSupported +if supported: + lit_config.maxIndividualTestTime = 600 +else: + lit_config.warning("Could not set a default per-test timeout. " + errormsg) + + +# If running tests natively, check for CPU features needed for some tests. + +if 'native' in config.available_features: + cpuid_exe = lit.util.which('lit-cpuid', config.lldb_tools_dir) + if cpuid_exe is None: + lit_config.warning("lit-cpuid not found, tests requiring CPU extensions will be skipped") + else: + out, err, exitcode = lit.util.executeCommand([cpuid_exe]) + if exitcode == 0: + for x in out.split(): + config.available_features.add('native-cpu-%s' % x) + else: + lit_config.warning("lit-cpuid failed: %s" % err) + +if not config.lldb_disable_python: + config.available_features.add('python') + +if config.lldb_enable_lzma: + config.available_features.add('lzma') + +if find_executable('xz') != None: + config.available_features.add('xz') Index: lldb/lit/Shell/lit.site.cfg.py.in =================================================================== --- lldb/lit/Shell/lit.site.cfg.py.in +++ lldb/lit/Shell/lit.site.cfg.py.in @@ -41,4 +41,4 @@ lit.llvm.initialize(lit_config, config) # Let the main config do the real work. -lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/lit.cfg.py") +lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/Shell/lit.cfg.py") Index: lldb/lit/Unit/README.md =================================================================== --- /dev/null +++ lldb/lit/Unit/README.md @@ -0,0 +1,4 @@ +# LLDB Unit Tests + +This directory only exists for the lit test driver. The actual tests live in +the `unittest` directory in top level LLDB directory. Index: lldb/lit/Unit/lit.cfg.py =================================================================== --- lldb/lit/Unit/lit.cfg.py +++ lldb/lit/Unit/lit.cfg.py @@ -9,7 +9,7 @@ from lit.llvm import llvm_config # name: The name of this test suite. -config.name = 'lldb-Unit' +config.name = 'lldb-unit' # suffixes: A list of file extensions to treat as test files. config.suffixes = [] Index: lldb/lit/lit.cfg.py =================================================================== --- lldb/lit/lit.cfg.py +++ lldb/lit/lit.cfg.py @@ -13,11 +13,12 @@ from lit.llvm.subst import ToolSubst from distutils.spawn import find_executable -site.addsitedir(os.path.dirname(__file__)) -from helper import toolchain +# This is the top level configuration. Most of these configuration options will +# be overriden by individual lit configuration files in the test +# subdirectories. # name: The name of this test suite. -config.name = 'LLDB' +config.name = 'lldb' # testFormat: The test format to use to interpret tests. config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell) @@ -37,71 +38,4 @@ # test_exec_root: The root path where tests should be run. config.test_exec_root = os.path.join(config.lldb_obj_root, 'lit') - llvm_config.use_default_substitutions() - -toolchain.use_lldb_substitutions(config) - -toolchain.use_support_substitutions(config) - - -if re.match(r'^arm(hf.*-linux)|(.*-linux-gnuabihf)', config.target_triple): - config.available_features.add("armhf-linux") - -def calculate_arch_features(arch_string): - # This will add a feature such as x86, arm, mips, etc for each built - # target - features = [] - for arch in arch_string.split(): - features.append(arch.lower()) - return features - -# Run llvm-config and add automatically add features for whether we have -# assertions enabled, whether we are in debug mode, and what targets we -# are built for. -llvm_config.feature_config( - [('--assertion-mode', {'ON': 'asserts'}), - ('--build-mode', {'DEBUG': 'debug'}), - ('--targets-built', calculate_arch_features) - ]) - -# Clean the module caches in the test build directory. This is necessary in an -# incremental build whenever clang changes underneath, so doing it once per -# lit.py invocation is close enough. -for cachedir in [config.clang_module_cache, config.lldb_module_cache]: - if os.path.isdir(cachedir): - print("Deleting module cache at %s."%cachedir) - shutil.rmtree(cachedir) - -# Set a default per-test timeout of 10 minutes. Setting a timeout per test -# requires that killProcessAndChildren() is supported on the platform and -# lit complains if the value is set but it is not supported. -supported, errormsg = lit_config.maxIndividualTestTimeIsSupported -if supported: - lit_config.maxIndividualTestTime = 600 -else: - lit_config.warning("Could not set a default per-test timeout. " + errormsg) - - -# If running tests natively, check for CPU features needed for some tests. - -if 'native' in config.available_features: - cpuid_exe = lit.util.which('lit-cpuid', config.lldb_tools_dir) - if cpuid_exe is None: - lit_config.warning("lit-cpuid not found, tests requiring CPU extensions will be skipped") - else: - out, err, exitcode = lit.util.executeCommand([cpuid_exe]) - if exitcode == 0: - for x in out.split(): - config.available_features.add('native-cpu-%s' % x) - else: - lit_config.warning("lit-cpuid failed: %s" % err) - -if not config.lldb_disable_python: - config.available_features.add('python') - -if config.lldb_enable_lzma: - config.available_features.add('lzma') - -if find_executable('xz') != None: - config.available_features.add('xz')