From 644b63bd31f55aaaf1ebafc7df7cd7cea2aa26a8 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Tue, 2 May 2023 15:54:29 -0500 Subject: [PATCH] [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 --- libc/cmake/modules/LLVMLibCTestRules.cmake | 15 +++++++++++---- libc/test/src/string/memory_utils/CMakeLists.txt | 5 +++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index a99274c..d1d536c 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 c67142f..06b9838 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 ) -- 2.7.4