[libc][NFC] Add few options to allow users to skip building and running some tests.#199474
Open
lntue wants to merge 2 commits into
Open
[libc][NFC] Add few options to allow users to skip building and running some tests.#199474lntue wants to merge 2 commits into
lntue wants to merge 2 commits into
Conversation
|
@llvm/pr-subscribers-libc Author: lntue ChangesThese options will be used to reduce redundancy and time for precommit CIs:
Full diff: https://github.com/llvm/llvm-project/pull/199474.diff 4 Files Affected:
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
|
Member
|
What's the change from check-libc to check-libc-lit for? |
Contributor
Author
To provide a simple target to "only build all the tests without running them", and I want to try to build the tests for "non-testable targets" in our CIs: https://github.com/llvm/llvm-project/blob/main/.github/workflows/libc-fullbuild-tests.yml#L191 , and to include GPU build-only CIs after. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
These options will be used to reduce redundancy and time for precommit CIs: