diff options
author | Andreas Schneider <asn@samba.org> | 2019-02-15 12:04:20 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2019-02-28 12:49:14 +0100 |
commit | 0d9bb5b5a5ec796333ab5827cc2c65a92dab60d1 (patch) | |
tree | 1ebf085e8f8bdd67604fab13c08cf893025824d0 | |
parent | 43670a36dc549a885becccbe79f556829243b674 (diff) | |
download | nss_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.txt | 56 |
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}) |