diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index 89db3f0af50e0..258b9ddaf72bc 100644 --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -19,6 +19,12 @@ function(_get_common_test_compile_options output_var c_test flags) ${config_flags} ${arch_flags}) + # EXPECT_DEATH and ASSERT_DEATH might be quite slow. LIBC_TEST_SKIP_DEATH_TESTS + # will make those tests no-op to reduce the overall test time. + if(LIBC_TEST_SKIP_DEATH_TESTS) + list(APPEND compile_options "-DLIBC_TEST_SKIP_DEATH_TESTS") + endif() + if(LLVM_LIBC_COMPILER_IS_GCC_COMPATIBLE) list(APPEND compile_options "-fpie") diff --git a/libc/test/CMakeLists.txt b/libc/test/CMakeLists.txt index de14aaf97de76..c6f648ddcaef7 100644 --- a/libc/test/CMakeLists.txt +++ b/libc/test/CMakeLists.txt @@ -26,20 +26,30 @@ configure_lit_site_cfg( "CMAKE_CROSSCOMPILING_EMULATOR" ) -add_lit_testsuite(check-libc +add_custom_target(check-libc-build) +add_lit_testsuite(check-libc-lit "Running libc tests via lit" ${LIBC_BUILD_DIR}/test ) +add_dependencies(check-libc-lit check-libc-build) if (TARGET check-hdrgen) - add_dependencies(check-libc check-hdrgen) + add_dependencies(check-libc-lit check-hdrgen) endif() if(LIBC_ENABLE_UNITTESTS AND NOT LIBC_TEST_HERMETIC_TEST_ONLY) - add_dependencies(check-libc libc-unit-tests-build) + add_dependencies(check-libc-build libc-unit-tests-build) endif() if(LIBC_ENABLE_HERMETIC_TESTS AND NOT LIBC_TEST_UNIT_TEST_ONLY) - add_dependencies(check-libc libc-hermetic-tests-build) + add_dependencies(check-libc-build libc-hermetic-tests-build) +endif() + +add_custom_target(check-libc) +if(LIBC_TEST_CHECK_LIBC_BUILD_ONLY) + message(STATUS "check-libc target will now only build all the tests. Use ninja check-libc-lit to run all the tests.") + add_dependencies(check-libc check-libc-build) +else() + add_dependencies(check-libc check-libc-lit) endif() add_subdirectory(UnitTest) diff --git a/libc/test/UnitTest/LibcTest.h b/libc/test/UnitTest/LibcTest.h index 8e41d3eeefcd5..133c198d42f15 100644 --- a/libc/test/UnitTest/LibcTest.h +++ b/libc/test/UnitTest/LibcTest.h @@ -495,11 +495,20 @@ CString libc_make_test_file_path_func(const char *file_name); #define ASSERT_EXITS(FUNC, EXIT) \ LIBC_TEST_PROCESS_(testProcessExits, FUNC, EXIT, return) +#ifdef LIBC_TEST_SKIP_DEATH_TESTS + +#define EXPECT_DEATH(FUNC, SIG) +#define ASSERT_DEATH(FUNC, SIG) + +#else + #define EXPECT_DEATH(FUNC, SIG) \ LIBC_TEST_PROCESS_(testProcessKilled, FUNC, SIG, ) #define ASSERT_DEATH(FUNC, SIG) \ LIBC_TEST_PROCESS_(testProcessKilled, FUNC, SIG, return) +#endif // LIBC_TEST_SKIP_DEATH_TESTS + #endif // ENABLE_SUBPROCESS_TESTS //////////////////////////////////////////////////////////////////////////////// diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt index e86b0a45eb77c..7a5c3a369c2fc 100644 --- a/libc/test/shared/CMakeLists.txt +++ b/libc/test/shared/CMakeLists.txt @@ -1,5 +1,15 @@ add_custom_target(libc-shared-tests) +# Shared math tests include the entire math library headers into a single file +# so it might take some time to compile the tests. We do have dedicated +# precommit CIs to build and test shared tests. So we provide a cmake option +# LIBC_TEST_SKIP_SHARED_TESTS to reduce redundant testings and reduce test time +# for other precommit CIs. +if(LIBC_TEST_SKIP_SHARED_TESTS) + if(LIBC_CMAKE_VERBOSE_LOGGING) + message(STATUS "LIBC_TEST_SKIP_SHARED_MATH_TESTS is set. Skipping libc-shared-tests.") + endif() +else() add_fp_unittest( shared_math_test SUITE @@ -802,6 +812,7 @@ add_fp_unittest( libc.src.__support.math.totalordermagf16 libc.src.__support.math.totalordermagl ) +endif() # LIBC_TEST_SKIP_SHARED_MATH_TESTS add_fp_unittest( shared_str_to_num_test