Skip to content

Commit 56fde22

Browse files
committed
test: set lit.py args in separate setup_lit_args (swiftlang#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. # Conflicts: # test/CMakeLists.txt
1 parent afde15c commit 56fde22

File tree

1 file changed

+132
-108
lines changed

1 file changed

+132
-108
lines changed

test/CMakeLists.txt

Lines changed: 132 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -180,51 +180,129 @@ set(SWIFT_LIT_ARGS "" CACHE STRING "Arguments to pass to lit")
180180

181181
set(SWIFT_LIT_ENVIRONMENT "" CACHE STRING "Environment to use for lit invocations")
182182

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

214-
option(SWIFT_TEST_USE_LEAKS "Run Swift stdlib tests under leaks" FALSE)
215-
if (SWIFT_TEST_USE_LEAKS)
216-
list(APPEND SWIFT_LIT_ARGS "--param" "leaks-all")
217-
endif()
222+
if (SWIFT_TEST_USE_LEAKS)
223+
list(APPEND swift_lit_args_result "--param" "leaks-all")
224+
endif()
218225

219-
if (SWIFT_ENABLE_ARRAY_COW_CHECKS)
220-
list(APPEND SWIFT_LIT_ARGS
221-
"--param" "array_cow_checks")
222-
endif()
226+
if (SWIFT_ENABLE_ARRAY_COW_CHECKS)
227+
list(APPEND swift_lit_args_result
228+
"--param" "array_cow_checks")
229+
endif()
223230

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

229307
if (LLVM_USE_SANITIZER STREQUAL "Address")
230308
set(SWIFT_ASAN_BUILD TRUE)
@@ -429,73 +507,6 @@ foreach(SDK ${SWIFT_SDKS})
429507
COMMENT "Uploading stdlib")
430508

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

549+
setup_lit_args(final_lit_args "${SDK}" "${SWIFT_TEST_RESULTS_DIR}" OFF)
550+
538551
set(test_target_name
539552
"check-swift${test_subset_target_suffix}${test_mode_target_suffix}${VARIANT_SUFFIX}")
540553
add_custom_target("${test_target_name}"
@@ -544,7 +557,7 @@ foreach(SDK ${SWIFT_SDKS})
544557
COMMAND
545558
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
546559
$<TARGET_FILE:Python3::Interpreter> "${LIT}"
547-
${LIT_ARGS}
560+
${final_lit_args}
548561
"--param" "swift_test_subset=${test_subset}"
549562
"--param" "swift_test_mode=${test_mode}"
550563
${directories}
@@ -564,7 +577,7 @@ foreach(SDK ${SWIFT_SDKS})
564577
COMMAND
565578
${CMAKE_COMMAND} -E env ${SWIFT_LIT_ENVIRONMENT}
566579
$<TARGET_FILE:Python3::Interpreter> "${LIT}"
567-
${LIT_ARGS}
580+
${final_lit_args}
568581
"--param" "swift_test_subset=${test_subset}"
569582
"--param" "swift_test_mode=${test_mode}"
570583
${SWIFT_LIT_TEST_PATHS}
@@ -615,6 +628,17 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB_CROSS_COMPILING)
615628
"${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.site.cfg"
616629
"test${VARIANT_SUFFIX}.lit.site.cfg")
617630
swift_generate_lit_swift_features_cfg("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.swift-features.cfg")
631+
632+
set(VARIANT_SUFFIX "-embedded-wasi")
633+
set(VARIANT_TRIPLE "wasm32-unknown-wasip1")
634+
set(VARIANT_EXTERNAL_EMBEDDED_PLATFORM FALSE)
635+
set(VARIANT_EXTERNAL_EMBEDDED_DEVICE)
636+
set(SWIFT_TEST_RESULTS_DIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/swift-test-results/${VARIANT_TRIPLE}")
637+
swift_configure_lit_site_cfg(
638+
"${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in"
639+
"${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.site.cfg"
640+
"test${VARIANT_SUFFIX}.lit.site.cfg")
641+
swift_generate_lit_swift_features_cfg("${CMAKE_CURRENT_BINARY_DIR}${VARIANT_SUFFIX}/lit.swift-features.cfg")
618642
endif()
619643

620644
# Add shortcuts for the default variant.

0 commit comments

Comments
 (0)