[libc-commits] [libc] 644b63b - [libc] Add 'UNIT_TEST_ONLY' and 'HERMETIC_TEST_ONLY' to 'add_libc_test'

Joseph Huber via libc-commits libc-commits at lists.llvm.org
Tue May 2 16:51:22 PDT 2023


Author: Joseph Huber
Date: 2023-05-02T18:51:12-05:00
New Revision: 644b63bd31f55aaaf1ebafc7df7cd7cea2aa26a8

URL: https://github.com/llvm/llvm-project/commit/644b63bd31f55aaaf1ebafc7df7cd7cea2aa26a8
DIFF: https://github.com/llvm/llvm-project/commit/644b63bd31f55aaaf1ebafc7df7cd7cea2aa26a8.diff

LOG: [libc] Add 'UNIT_TEST_ONLY' and 'HERMETIC_TEST_ONLY' to 'add_libc_test'

The `add_libc_test` option allows us to enable both kinds of tests in a
single option. However, some tests cannot be made hermetic with the
current approach. Such as tests that rely on system utilities or
libraries. This patch adds two options `UNIT_TEST_ONLY` and
`HERMETIC_TEST_ONLY` to offer more fine-grained control over which
version gets built. This makes it explicit which version a test supports
and why.

Depends on D149662

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D149691

Added: 
    

Modified: 
    libc/cmake/modules/LLVMLibCTestRules.cmake
    libc/test/src/string/memory_utils/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index a99274ce5ce3..d1d536cb97dc 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -693,10 +693,17 @@ endfunction(add_libc_hermetic_test)
 
 # A convenience function to add both a unit test as well as a hermetic test.
 function(add_libc_test test_name)
-  if(LIBC_ENABLE_UNITTESTS)
-    add_libc_unittest(${test_name}.__unit__ ${ARGN})
+  cmake_parse_arguments(
+    "LIBC_TEST"
+    "UNIT_TEST_ONLY;HERMETIC_TEST_ONLY" # Optional arguments
+    "" # Single value arguments
+    "" # Multi-value arguments
+    ${ARGN}
+  )
+  if(LIBC_ENABLE_UNITTESTS AND NOT LIBC_TEST_HERMETIC_TEST_ONLY)
+    add_libc_unittest(${test_name}.__unit__ ${LIBC_TEST_UNPARSED_ARGUMENTS})
   endif()
-  if(LIBC_ENABLE_HERMETIC_TESTS)
-    add_libc_hermetic_test(${test_name}.__hermetic__ ${ARGN})
+  if(LIBC_ENABLE_HERMETIC_TESTS AND NOT LIBC_TEST_UNIT_TEST_ONLY)
+    add_libc_hermetic_test(${test_name}.__hermetic__ ${LIBC_TEST_UNPARSED_ARGUMENTS})
   endif()
 endfunction(add_libc_test)

diff  --git a/libc/test/src/string/memory_utils/CMakeLists.txt b/libc/test/src/string/memory_utils/CMakeLists.txt
index c67142fc1bbf..06b98381390b 100644
--- a/libc/test/src/string/memory_utils/CMakeLists.txt
+++ b/libc/test/src/string/memory_utils/CMakeLists.txt
@@ -1,5 +1,5 @@
-# This test uses too much memory to be made hermetic.
-add_libc_unittest(
+# This test currently uses too much memory to be made hermetic.
+add_libc_test(
   utils_test
   SUITE
     libc-string-tests
@@ -15,4 +15,5 @@ add_libc_unittest(
     libc.src.__support.CPP.span
     libc.src.__support.macros.sanitizer
     libc.src.string.memory_utils.memory_utils
+  UNIT_TEST_ONLY
 )


        


More information about the libc-commits mailing list