diff options
author | Andreas Schneider <asn@samba.org> | 2020-01-31 13:32:46 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2020-01-31 14:17:09 +0100 |
commit | 81078a8d6d40189390218b9ae2b42cc258d745aa (patch) | |
tree | bcc90e21fa0ca4821220c475969ca0b67aa3ea97 | |
parent | 43b185e1696562ba17ea05e3574f030f911aa8cb (diff) | |
download | pam_wrapper-81078a8d6d40189390218b9ae2b42cc258d745aa.tar.gz pam_wrapper-81078a8d6d40189390218b9ae2b42cc258d745aa.tar.xz pam_wrapper-81078a8d6d40189390218b9ae2b42cc258d745aa.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 | 62 |
1 files changed, 43 insertions, 19 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e40341d..494e511 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,12 +22,46 @@ configure_file(services/matrix_py.in ${CMAKE_CURRENT_BINARY_DIR}/services/matrix configure_file(services/pwrap_get_set.in ${CMAKE_CURRENT_BINARY_DIR}/services/pwrap_get_set @ONLY) -if (OSX) - set(TEST_ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${PAM_WRAPPER_LOCATION};PAM_WRAPPER=1;PAM_WRAPPER_SERVICE_DIR=${CMAKE_CURRENT_BINARY_DIR}/services}) - add_definitions(-DOSX) -else () - set(TEST_ENVIRONMENT LD_PRELOAD=${PAM_WRAPPER_LOCATION};PAM_WRAPPER=1;PAM_WRAPPER_SERVICE_DIR=${CMAKE_CURRENT_BINARY_DIR}/services) -endif () +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 ${PAM_WRAPPER_LOCATION}) + + if (OSX) + set(TORTURE_ENVIRONMENT "DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${RESOLV_WRAPPER_LOCATION}:${SOCKET_WRAPPER_LIBRARY}") + else () + string(REPLACE ";" ":" _TMP_ENV "${PRELOAD_LIBRARIES}") + set(TORTURE_ENVIRONMENT "LD_PRELOAD=${_TMP_ENV}") + endif() + + list(APPEND TORTURE_ENVIRONMENT PAM_WRAPPER=1) + list(APPEND TORTURE_ENVIRONMENT PAM_WRAPPER_SERVICE_DIR=${CMAKE_CURRENT_BINARY_DIR}/services) + + foreach(_arg ${ARGN}) + list(APPEND TORTURE_ENVIRONMENT ${_arg}) + endforeach() + + set_property(TEST + ${_TEST_NAME} + PROPERTY + ENVIRONMENT "${TORTURE_ENVIRONMENT}") +endfunction() set(PAM_LIBRARIES pam) if (HAVE_PAM_MISC) @@ -44,11 +78,7 @@ add_cmocka_test(test_pam_wrapper SOURCES test_pam_wrapper.c COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} LINK_LIBRARIES ${TEST_LIBRARIES}) -set_property( - TEST - test_pam_wrapper - PROPERTY - ENVIRONMENT ${TEST_ENVIRONMENT}) +add_cmocka_test_environment(test_pam_wrapper) if (PYTHON2_EXECUTABLE) add_test(NAME @@ -56,10 +86,7 @@ if (PYTHON2_EXECUTABLE) COMMAND ${PYTHON2_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pypamtest_test.py) - set_property(TEST - py2pamtest_test - PROPERTY - ENVIRONMENT ${TEST_ENVIRONMENT}) + add_cmocka_test_environment(py2pamtest_test) endif() if (PYTHON3_EXECUTABLE) @@ -68,8 +95,5 @@ if (PYTHON3_EXECUTABLE) COMMAND ${PYTHON3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pypamtest_test.py) - set_property(TEST - py3pamtest_test - PROPERTY - ENVIRONMENT ${TEST_ENVIRONMENT}) + add_cmocka_test_environment(py3pamtest_test) endif() |