Skip to content

Commit e34eb33

Browse files
authored
test: set lit.py args in separate setup_lit_args (#82878)
Currently `test/CMakeLists.txt` can only set `SWIFT_LIT_ARGS` for all tests uniformly. This means that we can't have tests for Embedded Swift with a different set of params. Let's refactor computation of `lit.py` options and arguments into a separate function, which means these params can set separately for different tests. In this change we're only using it once, but in the future we anticipate another use of `setup_lit_args` specifically for Embedded Swift testing.
1 parent 3f74263 commit e34eb33

File tree

1 file changed

+121
-109
lines changed

1 file changed

+121
-109
lines changed

test/CMakeLists.txt

Lines changed: 121 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -176,51 +176,129 @@ set(SWIFT_LIT_ARGS "" CACHE STRING "Arguments to pass to lit")
176176

177177
set(SWIFT_LIT_ENVIRONMENT "" CACHE STRING "Environment to use for lit invocations")
178178

179-
if(NOT SWIFT_INCLUDE_TOOLS)
180-
if(SWIFT_RUN_TESTS_WITH_HOST_COMPILER)
181-
precondition(CMAKE_Swift_COMPILER MESSAGE "Can only run tests if a Swift compiler is specified")
182-
get_filename_component(SWIFT_COMPILER_DIR "${CMAKE_Swift_COMPILER}" DIRECTORY)
183-
precondition(SWIFT_COMPILER_DIR)
184-
# We assume that we are building against a toolchain where all tools are
185-
# next to swiftc.
186-
list(APPEND SWIFT_LIT_ARGS
187-
"--path=${SWIFT_COMPILER_DIR}")
188-
else()
189-
list(APPEND SWIFT_LIT_ARGS
190-
"--path=${SWIFT_NATIVE_LLVM_TOOLS_PATH}"
191-
"--param" "swift_native_llvm_tools_path=${SWIFT_NATIVE_LLVM_TOOLS_PATH}"
192-
"--path=${SWIFT_NATIVE_CLANG_TOOLS_PATH}"
193-
"--param" "swift_native_clang_tools_path=${SWIFT_NATIVE_CLANG_TOOLS_PATH}"
194-
"--path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH}"
195-
"--param" "swift_native_swift_tools_path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH}"
196-
)
197-
endif()
198-
if(SWIFT_BUILD_STDLIB)
199-
# If building only static stdlib, use `swift_static` resources directory.
200-
if(NOT SWIFT_BUILD_DYNAMIC_STDLIB AND SWIFT_BUILD_STATIC_STDLIB)
201-
list(APPEND SWIFT_LIT_ARGS
202-
"--param" "test_resource_dir=${SWIFTSTATICLIB_DIR}")
179+
option(SWIFT_TEST_USE_LEAKS "Run Swift stdlib tests under leaks" FALSE)
180+
181+
function(setup_lit_args ARGS_VAR_OUT tested_sdk test_results_dir resource_dir_override)
182+
set(swift_lit_args_result)
183+
184+
if(NOT SWIFT_INCLUDE_TOOLS)
185+
if(SWIFT_RUN_TESTS_WITH_HOST_COMPILER)
186+
precondition(CMAKE_Swift_COMPILER MESSAGE "Can only run tests if a Swift compiler is specified")
187+
get_filename_component(SWIFT_COMPILER_DIR "${CMAKE_Swift_COMPILER}" DIRECTORY)
188+
precondition(SWIFT_COMPILER_DIR)
189+
# We assume that we are building against a toolchain where all tools are
190+
# next to swiftc.
191+
list(APPEND swift_lit_args_result
192+
"--path=${SWIFT_COMPILER_DIR}")
203193
else()
204-
list(APPEND SWIFT_LIT_ARGS
205-
"--param" "test_resource_dir=${SWIFTLIB_DIR}")
194+
list(APPEND swift_lit_args_result
195+
"--path=${SWIFT_NATIVE_LLVM_TOOLS_PATH}"
196+
"--param" "swift_native_llvm_tools_path=${SWIFT_NATIVE_LLVM_TOOLS_PATH}"
197+
"--path=${SWIFT_NATIVE_CLANG_TOOLS_PATH}"
198+
"--param" "swift_native_clang_tools_path=${SWIFT_NATIVE_CLANG_TOOLS_PATH}"
199+
"--path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH}"
200+
"--param" "swift_native_swift_tools_path=${SWIFT_NATIVE_SWIFT_TOOLS_PATH}"
201+
)
202+
endif()
203+
if(SWIFT_BUILD_STDLIB)
204+
if(resource_dir_override)
205+
list(APPEND swift_lit_args_result
206+
"--param" "test_resource_dir=${resource_dir_override}")
207+
# If building only static stdlib, use `swift_static` resources directory.
208+
elseif(NOT SWIFT_BUILD_DYNAMIC_STDLIB AND SWIFT_BUILD_STATIC_STDLIB)
209+
list(APPEND swift_lit_args_result
210+
"--param" "test_resource_dir=${SWIFTSTATICLIB_DIR}")
211+
else()
212+
list(APPEND swift_lit_args_result
213+
"--param" "test_resource_dir=${SWIFTLIB_DIR}")
214+
endif()
206215
endif()
207216
endif()
208-
endif()
209217

210-
option(SWIFT_TEST_USE_LEAKS "Run Swift stdlib tests under leaks" FALSE)
211-
if (SWIFT_TEST_USE_LEAKS)
212-
list(APPEND SWIFT_LIT_ARGS "--param" "leaks-all")
213-
endif()
218+
if (SWIFT_TEST_USE_LEAKS)
219+
list(APPEND swift_lit_args_result "--param" "leaks-all")
220+
endif()
214221

215-
if (SWIFT_ENABLE_ARRAY_COW_CHECKS)
216-
list(APPEND SWIFT_LIT_ARGS
217-
"--param" "array_cow_checks")
218-
endif()
222+
if (SWIFT_ENABLE_ARRAY_COW_CHECKS)
223+
list(APPEND swift_lit_args_result
224+
"--param" "array_cow_checks")
225+
endif()
219226

220-
if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
221-
list(APPEND SWIFT_LIT_ARGS
222-
"--param" "build_mode=${CMAKE_CFG_INTDIR}")
223-
endif()
227+
if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
228+
list(APPEND swift_lit_args_result
229+
"--param" "build_mode=${CMAKE_CFG_INTDIR}")
230+
endif()
231+
232+
if(SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING)
233+
list(APPEND swift_lit_args_result "--param" "differentiable_programming")
234+
endif()
235+
236+
if(SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY)
237+
list(APPEND swift_lit_args_result "--param" "concurrency")
238+
endif()
239+
240+
if(SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED)
241+
list(APPEND swift_lit_args_result "--param" "distributed")
242+
endif()
243+
244+
if(SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING)
245+
list(APPEND swift_lit_args_result "--param" "string_processing")
246+
endif()
247+
248+
if(SWIFT_ENABLE_BACKTRACING)
249+
list(APPEND swift_lit_args_result "--param" "backtracing")
250+
endif()
251+
252+
if(SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION)
253+
list(APPEND swift_lit_args_result "--param" "observation")
254+
endif()
255+
256+
if(SWIFT_ENABLE_SYNCHRONIZATION)
257+
list(APPEND swift_lit_args_result "--param" "synchronization")
258+
endif()
259+
260+
if(SWIFT_ENABLE_VOLATILE)
261+
list(APPEND swift_lit_args_result "--param" "volatile")
262+
endif()
263+
264+
if(SWIFT_ENABLE_RUNTIME_MODULE)
265+
list(APPEND swift_lit_args_result "--param" "runtime_module")
266+
endif()
267+
268+
if(SWIFT_BUILD_REMOTE_MIRROR)
269+
list(APPEND swift_lit_args_result "--param" "remote_mirror")
270+
endif()
271+
272+
list(APPEND swift_lit_args_result "--param" "threading=${SWIFT_SDK_${tested_sdk}_THREADING_PACKAGE}")
273+
274+
# Enable on-crash backtracing if supported
275+
if(("${tested_sdk}" STREQUAL "OSX" OR "${tested_sdk}" STREQUAL "LINUX")
276+
AND NOT SWIFT_ASAN_BUILD)
277+
list(APPEND swift_lit_args_result "--param" "backtrace_on_crash")
278+
endif()
279+
280+
execute_process(COMMAND
281+
$<TARGET_FILE:Python3::Interpreter> "-c" "import psutil"
282+
RESULT_VARIABLE python_psutil_status
283+
TIMEOUT 1 # second
284+
ERROR_QUIET)
285+
if(NOT python_psutil_status)
286+
list(APPEND swift_lit_args_result "--timeout=3000") # 50 minutes
287+
endif()
288+
289+
list(APPEND swift_lit_args_result "--xunit-xml-output=${test_results_dir}/lit-tests.xml")
290+
291+
if(NOT SWIFT_BUILD_STDLIB AND NOT SWIFT_PATH_TO_EXTERNAL_STDLIB_BUILD)
292+
list(APPEND swift_lit_args_result
293+
"--param" "test_sdk_overlay_dir=${SWIFTLIB_DIR}/${SWIFT_SDK_${tested_sdk}_LIB_SUBDIR}")
294+
endif()
295+
296+
297+
set(LIT_ARGS "${swift_lit_args_result} ${SWIFT_LIT_ARGS} ${LLVM_LIT_ARGS}")
298+
separate_arguments(swift_lit_args_result)
299+
300+
set(${ARGS_VAR_OUT} ${swift_lit_args_result} PARENT_SCOPE)
301+
endfunction()
224302

225303
if (LLVM_USE_SANITIZER STREQUAL "Address")
226304
set(SWIFT_ASAN_BUILD TRUE)
@@ -425,73 +503,6 @@ foreach(SDK ${SWIFT_SDKS})
425503
COMMENT "Uploading stdlib")
426504

427505
foreach(test_mode ${TEST_MODES})
428-
set(LIT_ARGS "${SWIFT_LIT_ARGS} ${LLVM_LIT_ARGS}")
429-
separate_arguments(LIT_ARGS)
430-
431-
if(NOT SWIFT_BUILD_STDLIB AND NOT SWIFT_PATH_TO_EXTERNAL_STDLIB_BUILD)
432-
list(APPEND LIT_ARGS
433-
"--param" "test_sdk_overlay_dir=${SWIFTLIB_DIR}/${SWIFT_SDK_${SDK}_LIB_SUBDIR}")
434-
endif()
435-
436-
execute_process(COMMAND
437-
$<TARGET_FILE:Python3::Interpreter> "-c" "import psutil"
438-
RESULT_VARIABLE python_psutil_status
439-
TIMEOUT 1 # second
440-
ERROR_QUIET)
441-
if(NOT python_psutil_status)
442-
list(APPEND LIT_ARGS "--timeout=3000") # 50 minutes
443-
endif()
444-
445-
list(APPEND LIT_ARGS "--xunit-xml-output=${SWIFT_TEST_RESULTS_DIR}/lit-tests.xml")
446-
447-
if(SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING)
448-
list(APPEND LIT_ARGS "--param" "differentiable_programming")
449-
endif()
450-
451-
if(SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY)
452-
list(APPEND LIT_ARGS "--param" "concurrency")
453-
endif()
454-
455-
if(SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED)
456-
list(APPEND LIT_ARGS "--param" "distributed")
457-
endif()
458-
459-
if(SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING)
460-
list(APPEND LIT_ARGS "--param" "string_processing")
461-
endif()
462-
463-
if(SWIFT_ENABLE_BACKTRACING)
464-
list(APPEND LIT_ARGS "--param" "backtracing")
465-
endif()
466-
467-
if(SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION)
468-
list(APPEND LIT_ARGS "--param" "observation")
469-
endif()
470-
471-
if(SWIFT_ENABLE_SYNCHRONIZATION)
472-
list(APPEND LIT_ARGS "--param" "synchronization")
473-
endif()
474-
475-
if(SWIFT_ENABLE_VOLATILE)
476-
list(APPEND LIT_ARGS "--param" "volatile")
477-
endif()
478-
479-
if(SWIFT_ENABLE_RUNTIME_MODULE)
480-
list(APPEND LIT_ARGS "--param" "runtime_module")
481-
endif()
482-
483-
if(SWIFT_BUILD_REMOTE_MIRROR)
484-
list(APPEND LIT_ARGS "--param" "remote_mirror")
485-
endif()
486-
487-
list(APPEND LIT_ARGS "--param" "threading=${SWIFT_SDK_${SDK}_THREADING_PACKAGE}")
488-
489-
# Enable on-crash backtracing if supported
490-
if(("${SDK}" STREQUAL "OSX" OR "${SDK}" STREQUAL "LINUX")
491-
AND NOT SWIFT_ASAN_BUILD)
492-
list(APPEND LIT_ARGS "--param" "backtrace_on_crash")
493-
endif()
494-
495506
foreach(test_subset ${TEST_SUBSETS})
496507
set(directories)
497508
set(dependencies ${test_dependencies})
@@ -531,6 +542,8 @@ foreach(SDK ${SWIFT_SDKS})
531542
set(maybe_command_upload_stdlib ${command_upload_stdlib})
532543
endif()
533544

545+
setup_lit_args(final_lit_args "${SDK}" "${SWIFT_TEST_RESULTS_DIR}" OFF)
546+
534547
set(test_target_name
535548
"check-swift${test_subset_target_suffix}${test_mode_target_suffix}${VARIANT_SUFFIX}")
536549
add_custom_target("${test_target_name}"
@@ -540,7 +553,7 @@ foreach(SDK ${SWIFT_SDKS})
540553
COMMAND
541554
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
542555
$<TARGET_FILE:Python3::Interpreter> "${LIT}"
543-
${LIT_ARGS}
556+
${final_lit_args}
544557
"--param" "swift_test_subset=${test_subset}"
545558
"--param" "swift_test_mode=${test_mode}"
546559
${directories}
@@ -560,7 +573,7 @@ foreach(SDK ${SWIFT_SDKS})
560573
COMMAND
561574
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
562575
$<TARGET_FILE:Python3::Interpreter> "${LIT}"
563-
${LIT_ARGS}
576+
${final_lit_args}
564577
"--param" "swift_test_subset=${test_subset}"
565578
"--param" "swift_test_mode=${test_mode}"
566579
${SWIFT_LIT_TEST_PATHS}
@@ -622,7 +635,6 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING)
622635
"${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.site.cfg"
623636
"test${VARIANT_SUFFIX}.lit.site.cfg")
624637
swift_generate_lit_swift_features_cfg("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.swift-features.cfg")
625-
message(STATUS "SWIFT_LIT_ARGS is ${SWIFT_LIT_ARGS}")
626638
endif()
627639

628640
# Add shortcuts for the default variant.

0 commit comments

Comments
 (0)