aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2020-01-31 13:32:46 +0100
committerAndreas Schneider <asn@samba.org>2020-01-31 14:17:09 +0100
commit81078a8d6d40189390218b9ae2b42cc258d745aa (patch)
treebcc90e21fa0ca4821220c475969ca0b67aa3ea97
parent43b185e1696562ba17ea05e3574f030f911aa8cb (diff)
downloadpam_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.txt62
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()