aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2019-02-15 12:04:20 +0100
committerAndreas Schneider <asn@samba.org>2019-02-28 12:49:14 +0100
commit0d9bb5b5a5ec796333ab5827cc2c65a92dab60d1 (patch)
tree1ebf085e8f8bdd67604fab13c08cf893025824d0
parent43670a36dc549a885becccbe79f556829243b674 (diff)
downloadnss_wrapper-0d9bb5b5a5ec796333ab5827cc2c65a92dab60d1.tar.gz
nss_wrapper-0d9bb5b5a5ec796333ab5827cc2c65a92dab60d1.tar.xz
nss_wrapper-0d9bb5b5a5ec796333ab5827cc2c65a92dab60d1.zip
cmake: Support running the tests with AddressSanitizer
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r--tests/CMakeLists.txt56
1 files changed, 42 insertions, 14 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6527cba..b145725 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -20,14 +20,6 @@ configure_file(group.in ${CMAKE_CURRENT_BINARY_DIR}/group @ONLY)
configure_file(hosts.in ${CMAKE_CURRENT_BINARY_DIR}/hosts @ONLY)
configure_file(shadow.in ${CMAKE_CURRENT_BINARY_DIR}/shadow @ONLY)
-set(TEST_ENVIRONMENT LD_PRELOAD=${NSS_WRAPPER_LOCATION})
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_PASSWD=${CMAKE_CURRENT_BINARY_DIR}/passwd)
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_GROUP=${CMAKE_CURRENT_BINARY_DIR}/group)
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_SHADOW=${CMAKE_CURRENT_BINARY_DIR}/shadow)
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_HOSTS=${CMAKE_CURRENT_BINARY_DIR}/hosts)
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_MODULE_SO_PATH=${CMAKE_CURRENT_BINARY_DIR}/libnss_nwrap.so)
-list(APPEND TEST_ENVIRONMENT NSS_WRAPPER_MODULE_FN_PREFIX=nwrap)
-
set(NWRAP_TESTS
testsuite
test_nwrap_vector
@@ -40,6 +32,46 @@ if (HAVE_SHADOW_H)
list(APPEND NWRAP_TESTS test_shadow)
endif (HAVE_SHADOW_H)
+function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
+ if (CMAKE_BUILD_TYPE)
+ string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
+ if (CMAKE_BUILD_TYPE_LOWER STREQUAL "addresssanitizer")
+ find_library(ASAN_LIBRARY
+ NAMES asan)
+ if (NOT ASAN_LIBRARY)
+ foreach(version RANGE 10 1)
+ if (NOT ASAN_LIBRARY)
+ find_library(ASAN_LIBRARY libasan.so.${version})
+ endif()
+ endforeach()
+ endif()
+ endif()
+ endif()
+
+ if (ASAN_LIBRARY)
+ list(APPEND PRELOAD_LIBRARIES ${ASAN_LIBRARY})
+ endif()
+ list(APPEND PRELOAD_LIBRARIES ${NSS_WRAPPER_LOCATION})
+
+ if (OSX)
+ set(TORTURE_ENVIRONMENT "DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${NSS_WRAPPER_LOCATION}")
+ else ()
+ string(REPLACE ";" ":" _TMP_ENV "${PRELOAD_LIBRARIES}")
+ set(TORTURE_ENVIRONMENT "LD_PRELOAD=${_TMP_ENV}")
+ endif()
+
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_PASSWD=${CMAKE_CURRENT_BINARY_DIR}/passwd)
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_GROUP=${CMAKE_CURRENT_BINARY_DIR}/group)
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_SHADOW=${CMAKE_CURRENT_BINARY_DIR}/shadow)
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_HOSTS=${CMAKE_CURRENT_BINARY_DIR}/hosts)
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_MODULE_SO_PATH=${CMAKE_CURRENT_BINARY_DIR}/libnss_nwrap.so)
+ list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_MODULE_FN_PREFIX=nwrap)
+
+ set_property(TEST
+ ${_TEST_NAME}
+ PROPERTY
+ ENVIRONMENT "${TORTURE_ENVIRONMENT}")
+endfunction()
foreach(_NWRAP_TEST ${NWRAP_TESTS})
add_cmocka_test(${_NWRAP_TEST} ${_NWRAP_TEST}.c ${TESTSUITE_LIBRARIES})
target_compile_options(${_NWRAP_TEST}
@@ -50,11 +82,7 @@ foreach(_NWRAP_TEST ${NWRAP_TESTS})
PRIVATE
-DBSD)
endif()
- set_property(
- TEST
- ${_NWRAP_TEST}
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT})
+ add_cmocka_test_environment(${_NWRAP_TEST})
endforeach()
if (HAVE_SHADOW_H)
@@ -74,4 +102,4 @@ set_property(
TEST
test_nwrap_disabled
PROPERTY
- ENVIRONMENT LD_PRELOAD=${CMAKE_BINARY_DIR}/src/libnss_wrapper.so)
+ ENVIRONMENT LD_PRELOAD=${NSS_WRAPPER_LOCATION})