[Lldb-commits] [lldb] 7ce92dc - [lldb/Test] Bypass LLDB_TEST_COMMON_ARGS for certain dotest args (NFC)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Fri Jan 10 14:40:26 PST 2020
Author: Jonas Devlieghere
Date: 2020-01-10T14:40:17-08:00
New Revision: 7ce92dc0b4bcc1044052a06df3f07a94eb890823
URL: https://github.com/llvm/llvm-project/commit/7ce92dc0b4bcc1044052a06df3f07a94eb890823
DIFF: https://github.com/llvm/llvm-project/commit/7ce92dc0b4bcc1044052a06df3f07a94eb890823.diff
LOG: [lldb/Test] Bypass LLDB_TEST_COMMON_ARGS for certain dotest args (NFC)
Rather than serializing every argument through LLDB_TEST_COMMON_ARGS, we
can pass some of them directly using their CMake variable. Although this
does introduce some code duplication between lit's site config and the
lldb-dotest utility, it also means that it becomes easier to override
these values (WIP).
Added:
Modified:
lldb/test/API/CMakeLists.txt
lldb/test/API/lit.cfg.py
lldb/test/API/lit.site.cfg.py.in
lldb/utils/lldb-dotest/lldb-dotest.in
Removed:
################################################################################
diff --git a/lldb/test/API/CMakeLists.txt b/lldb/test/API/CMakeLists.txt
index 45f622725412..16daa1e0ec25 100644
--- a/lldb/test/API/CMakeLists.txt
+++ b/lldb/test/API/CMakeLists.txt
@@ -36,7 +36,6 @@ set(LLDB_TEST_USER_ARGS
# hash of filename and .text section, there *will* be conflicts inside
# the build directory.
set(LLDB_TEST_COMMON_ARGS
- --arch=${LLDB_TEST_ARCH}
-s
${CMAKE_BINARY_DIR}/lldb-test-traces
-S nm
@@ -66,13 +65,6 @@ if ("${LLDB_TEST_COMPILER}" STREQUAL "")
message(FATAL_ERROR "LLDB test compiler not specified. Tests will not run.")
endif()
-list(APPEND LLDB_TEST_COMMON_ARGS
- --executable ${LLDB_TEST_EXECUTABLE}
- --compiler ${LLDB_TEST_COMPILER}
- --dsymutil ${LLDB_TEST_DSYMUTIL}
- --filecheck ${LLDB_TEST_FILECHECK}
- )
-
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
# All tests are currently flaky on Windows, so rerun them all once when they fail.
set(LLDB_TEST_COMMON_ARGS ${LLDB_TEST_COMMON_ARGS} --rerun-all-issues)
diff --git a/lldb/test/API/lit.cfg.py b/lldb/test/API/lit.cfg.py
index 9b1c3c12f172..aca13b9c64f8 100644
--- a/lldb/test/API/lit.cfg.py
+++ b/lldb/test/API/lit.cfg.py
@@ -33,6 +33,7 @@
'libclang_rt.asan_osx_dynamic.dylib')
config.environment['DYLD_INSERT_LIBRARIES'] = runtime
+
def find_shlibpath_var():
if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']:
yield 'LD_LIBRARY_PATH'
@@ -41,6 +42,7 @@ def find_shlibpath_var():
elif platform.system() == 'Windows':
yield 'PATH'
+
# Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent.
if config.shared_libs:
for shlibpath_var in find_shlibpath_var():
@@ -64,7 +66,7 @@ def find_shlibpath_var():
# 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)
+ print("Deleting module cache at %s." % cachedir)
shutil.rmtree(cachedir)
# Set a default per-test timeout of 10 minutes. Setting a timeout per test
@@ -78,14 +80,9 @@ def find_shlibpath_var():
# Build dotest command.
dotest_cmd = [config.dotest_path]
+dotest_cmd += ['--arch', config.test_arch]
dotest_cmd.extend(config.dotest_args_str.split(';'))
-# We don't want to force users passing arguments to lit to use `;` as a
-# separator. We use Python's simple lexical analyzer to turn the args into a
-# list.
-if config.dotest_lit_args_str:
- dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
-
# Library path may be needed to locate just-built clang.
if config.llvm_libs_dir:
dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
@@ -99,6 +96,26 @@ def find_shlibpath_var():
if config.clang_module_cache:
dotest_cmd += ['--clang-module-cache-dir', config.clang_module_cache]
+if config.lldb_executable:
+ dotest_cmd += ['--executable', config.lldb_executable]
+
+if config.test_compiler:
+ dotest_cmd += ['--compiler', config.test_compiler]
+
+if config.dsymutil:
+ dotest_cmd += ['--dsymutil', config.dsymutil]
+
+if config.filecheck:
+ dotest_cmd += ['--filecheck', config.filecheck]
+
+# We don't want to force users passing arguments to lit to use `;` as a
+# separator. We use Python's simple lexical analyzer to turn the args into a
+# list. Pass there arguments last so they can override anything that was
+# already configured.
+if config.dotest_lit_args_str:
+ dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
+
+
# Load LLDB test format.
sys.path.append(os.path.join(config.lldb_src_root, "test", "API"))
import lldbtest
diff --git a/lldb/test/API/lit.site.cfg.py.in b/lldb/test/API/lit.site.cfg.py.in
index 374ca929aeb6..d7e2764f672e 100644
--- a/lldb/test/API/lit.site.cfg.py.in
+++ b/lldb/test/API/lit.site.cfg.py.in
@@ -22,6 +22,11 @@ config.dotest_path = "@LLDB_SOURCE_DIR@/test/API/dotest.py"
config.dotest_args_str = "@LLDB_DOTEST_ARGS@"
config.lldb_enable_python = @LLDB_ENABLE_PYTHON@
config.dotest_lit_args_str = None
+config.lldb_executable = '@LLDB_TEST_EXECUTABLE@'
+config.test_arch = '@LLDB_TEST_ARCH@'
+config.test_compiler = '@LLDB_TEST_COMPILER@'
+config.dsymutil = '@LLDB_TEST_DSYMUTIL@'
+config.filecheck = '@LLDB_TEST_FILECHECK@'
# The API tests use their own module caches.
config.lldb_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_LLDB@", "lldb-api")
config.clang_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_CLANG@", "lldb-api")
diff --git a/lldb/utils/lldb-dotest/lldb-dotest.in b/lldb/utils/lldb-dotest/lldb-dotest.in
index 2032e2159d94..bab3f8baa98d 100755
--- a/lldb/utils/lldb-dotest/lldb-dotest.in
+++ b/lldb/utils/lldb-dotest/lldb-dotest.in
@@ -5,14 +5,24 @@ import sys
dotest_path = '@LLDB_SOURCE_DIR@/test/API/dotest.py'
build_dir = '@LLDB_TEST_BUILD_DIRECTORY@'
dotest_args_str = '@LLDB_DOTEST_ARGS@'
+arch = '@LLDB_TEST_ARCH@'
+executable = '@LLDB_TEST_EXECUTABLE@'
+compiler = '@LLDB_TEST_COMPILER@'
+dsymutil = '@LLDB_TEST_DSYMUTIL@'
+filecheck = '@LLDB_TEST_FILECHECK@'
if __name__ == '__main__':
wrapper_args = sys.argv[1:]
dotest_args = dotest_args_str.split(';')
# Build dotest.py command.
cmd = [sys.executable, dotest_path]
+ cmd.extend(['--arch', arch])
cmd.extend(dotest_args)
cmd.extend(['--build-dir', build_dir])
+ cmd.extend(['--executable', executable])
+ cmd.extend(['--compiler', compiler])
+ cmd.extend(['--dsymutil', dsymutil])
+ cmd.extend(['--filecheck', filecheck])
cmd.extend(wrapper_args)
# Invoke dotest.py and return exit code.
print(' '.join(cmd))
More information about the lldb-commits
mailing list