Skip to content

Commit

Permalink
[lldb] Make the API, Shell and Unit tests independent lit test suites
Browse files Browse the repository at this point in the history
Make the API, Shell and Unit tests independent lit test suites. This
allows us to specify different dependencies and skip rebuilding all the
unit test (which is particularly expensive) when running check-lldb-api
or check-lldb-shell.

This does not change the autogenerated targets such as
check-lldb-shell-driver or the top level check-lldb target, which all
continue to work as before.

Differential revision: https://reviews.llvm.org/D98842
  • Loading branch information
JDevlieghere committed Mar 19, 2021
1 parent 14ae0cf commit 6c52d4f
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 37 deletions.
27 changes: 15 additions & 12 deletions lldb/test/API/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
add_custom_target(lldb-api-test-deps)
add_dependencies(lldb-api-test-deps lldb-test-deps)

add_lit_testsuites(LLDB-API
${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS lldb-api-test-deps)

function(add_python_test_target name test_script args comment)
set(PYTHON_TEST_COMMAND
${Python3_EXECUTABLE}
Expand Down Expand Up @@ -153,39 +160,35 @@ string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_EXECUTAB
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_COMPILER "${LLDB_TEST_COMPILER}")
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_DSYMUTIL "${LLDB_TEST_DSYMUTIL}")

# Configure the API test suite.
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py)

if (CMAKE_GENERATOR STREQUAL "Xcode")
# Xcode does not get the auto-generated targets. We need to create
# check-lldb-api manually.
add_lit_testsuite(check-lldb-api "Running lldb api test suite"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS lldb-test-deps)
endif()

# Targets for running the test suite on the different Apple simulators.
add_lit_testsuite(check-lldb-simulator-ios
"Running lldb test suite on the iOS simulator"
${CMAKE_CURRENT_BINARY_DIR}
PARAMS "lldb-run-with-simulator=ios"
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-test-deps)
DEPENDS lldb-api-test-deps)

add_lit_testsuite(check-lldb-simulator-watchos
"Running lldb test suite on the watchOS simulator"
${CMAKE_CURRENT_BINARY_DIR}
PARAMS "lldb-run-with-simulator=watchos"
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-test-deps)
DEPENDS lldb-api-test-deps)

add_lit_testsuite(check-lldb-simulator-tvos
"Running lldb test suite on the tvOS simulator"
${CMAKE_CURRENT_BINARY_DIR}
PARAMS "lldb-run-with-simulator=tvos"
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-test-deps)
DEPENDS lldb-api-test-deps)

add_lit_testsuite(check-lldb-api "Running lldb api test suite"
${CMAKE_CURRENT_BINARY_DIR}
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-api-test-deps)
5 changes: 3 additions & 2 deletions lldb/test/API/lit.cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
config.suffixes = ['.py']

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

# test_exec_root: The root path where tests should be run.
config.test_exec_root = os.path.join(config.lldb_obj_root, 'test')


def mkdir_p(path):
Expand Down
1 change: 0 additions & 1 deletion lldb/test/API/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@LIT_SITE_CFG_IN_HEADER@

config.test_exec_root = "@LLDB_BINARY_DIR@"
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
Expand Down
18 changes: 6 additions & 12 deletions lldb/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -185,19 +185,13 @@ configure_lit_site_cfg(
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py)

add_lit_testsuites(LLDB
${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS lldb-test-deps)

add_lit_testsuite(check-lldb-lit "Running lldb lit test suite"
add_lit_testsuite(check-lldb "Running lldb lit test suite"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS lldb-test-deps)
set_target_properties(check-lldb-lit PROPERTIES FOLDER "lldb tests")

add_custom_target(check-lldb)
add_dependencies(check-lldb lldb-test-deps)
set_target_properties(check-lldb PROPERTIES FOLDER "lldb misc")
add_dependencies(check-lldb check-lldb-lit)
DEPENDS
lldb-api-test-deps
lldb-shell-test-deps
lldb-unit-test-deps)
set_target_properties(check-lldb PROPERTIES FOLDER "lldb tests")

# Add a lit test suite that runs the API & shell test while capturing a
# reproducer.
Expand Down
19 changes: 11 additions & 8 deletions lldb/test/Shell/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# Configure the Shell test suite.
add_custom_target(lldb-shell-test-deps)
add_dependencies(lldb-shell-test-deps lldb-test-deps)

add_lit_testsuites(LLDB-SHELL
${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS lldb-shell-test-deps)

configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
Expand All @@ -8,10 +14,7 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/lit-lldb-init.in
${CMAKE_CURRENT_BINARY_DIR}/lit-lldb-init)

if (CMAKE_GENERATOR STREQUAL "Xcode")
# Xcode does not get the auto-generated targets. We need to create
# check-lldb-shell manually.
add_lit_testsuite(check-lldb-shell "Running lldb shell test suite"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS lldb-test-deps)
endif()
add_lit_testsuite(check-lldb-shell "Running lldb shell test suite"
${CMAKE_CURRENT_BINARY_DIR}
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-shell-test-deps)
12 changes: 11 additions & 1 deletion lldb/test/Unit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
# Configure the Unit test suite.
add_custom_target(lldb-unit-test-deps)
add_dependencies(lldb-unit-test-deps lldb-test-deps)

add_lit_testsuites(LLDB-UNIT
${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS lldb-unit-test-deps)

configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py)

add_lit_testsuite(check-lldb-unit "Running lldb unit test suite"
${CMAKE_CURRENT_BINARY_DIR}
EXCLUDE_FROM_CHECK_ALL
DEPENDS lldb-unit-test-deps)
3 changes: 2 additions & 1 deletion lldb/unittests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
add_custom_target(LLDBUnitTests)
set_target_properties(LLDBUnitTests PROPERTIES FOLDER "lldb tests")
add_dependencies(lldb-test-deps LLDBUnitTests)

add_dependencies(lldb-unit-test-deps LLDBUnitTests)

include_directories(${LLDB_SOURCE_ROOT})
include_directories(${LLDB_PROJECT_ROOT}/unittests)
Expand Down

0 comments on commit 6c52d4f

Please sign in to comment.