set(PRELOAD_LIBS ${UID_WRAPPER_LOCATION})
-if (OSX)
- set(TEST_ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${PRELOAD_LIBS};UID_WRAPPER=1)
- add_definitions(-DOSX)
-else ()
- set(TEST_ENVIRONMENT LD_PRELOAD=${PRELOAD_LIBS};UID_WRAPPER_ROOT=1)
-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 ${UID_WRAPPER_LOCATION})
+
+ if (OSX)
+ set(TORTURE_ENVIRONMENT "DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${UID_WRAPPER_LOCATION}")
+ else ()
+ string(REPLACE ";" ":" _TMP_ENV "${PRELOAD_LIBRARIES}")
+ set(TORTURE_ENVIRONMENT "LD_PRELOAD=${_TMP_ENV}")
+ endif()
+
+ list(APPEND TORTURE_ENVIRONMENT UID_WRAPPER=1)
+
+ foreach(_arg ${ARGN})
+ list(APPEND TORTURE_ENVIRONMENT ${_arg})
+ endforeach()
+
+ set_property(TEST
+ ${_TEST_NAME}
+ PROPERTY
+ ENVIRONMENT "${TORTURE_ENVIRONMENT}")
+endfunction()
set(TESTSUITE_LIBRARIES ${UWRAP_REQUIRED_LIBRARIES} ${CMOCKA_LIBRARY})
foreach(_UWRAP_TEST ${UWRAP_TESTS})
add_cmocka_test(${_UWRAP_TEST} ${_UWRAP_TEST}.c ${TESTSUITE_LIBRARIES})
- set_property(
- TEST
- ${_UWRAP_TEST}
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1)
+ add_cmocka_test_environment(${_UWRAP_TEST} UID_WRAPPER_ROOT=1)
endforeach()
# helper library implementing uid_wrapper_enabled()
${DEFAULT_C_COMPILE_FLAGS})
add_cmocka_test(test_uwrap_enabled test_uwrap_enabled.c ${CMOCKA_LIBRARY} uwrap_enabled)
-set_property(
- TEST
- test_uwrap_enabled
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1)
+add_cmocka_test_environment(test_uwrap_enabled)
add_cmocka_test(test_uwrap_disabled test_uwrap_disabled.c ${CMOCKA_LIBRARY})
set_property(
TEST
test_uwrap_disabled
PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT})
+ ENVIRONMENT LD_PRELOAD=${UID_WRAPPER_LOCATION})
add_cmocka_test(test_thread_setuid test_thread_setuid.c ${CMOCKA_LIBRARY})
target_link_libraries(test_thread_setuid ${CMAKE_THREAD_LIBS_INIT})
-set_property(
- TEST
- test_thread_setuid
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1;CMOCKA_TEST_ABORT=1)
+add_cmocka_test_environment(test_thread_setuid UID_WRAPPER_ROOT=1 CMOCKA_TEST_ABORT=1)
add_cmocka_test(test_thread_setreuid test_thread_setreuid.c ${CMOCKA_LIBRARY})
target_link_libraries(test_thread_setreuid ${CMAKE_THREAD_LIBS_INIT})
-set_property(
- TEST
- test_thread_setreuid
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1;CMOCKA_TEST_ABORT=1)
+add_cmocka_test_environment(test_thread_setreuid UID_WRAPPER_ROOT=1 CMOCKA_TEST_ABORT=1)
add_cmocka_test(test_thread_sync_setreuid test_thread_sync_setreuid.c ${CMOCKA_LIBRARY})
target_link_libraries(test_thread_sync_setreuid ${CMAKE_THREAD_LIBS_INIT})
-set_property(
- TEST
- test_thread_sync_setreuid
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1;CMOCKA_TEST_ABORT=1)
+add_cmocka_test_environment(test_thread_sync_setreuid UID_WRAPPER_ROOT=1 CMOCKA_TEST_ABORT=1)
add_cmocka_test(test_glibc_thread_support test_glibc_thread_support.c ${CMOCKA_LIBRARY})
target_link_libraries(test_glibc_thread_support ${CMAKE_THREAD_LIBS_INIT})
-set_property(
- TEST
- test_glibc_thread_support
- PROPERTY
- ENVIRONMENT ${TEST_ENVIRONMENT};UID_WRAPPER=1)
+add_cmocka_test_environment(test_glibc_thread_support UID_WRAPPER_ROOT=1 CMOCKA_TEST_ABORT=1)
if (LINUX)
add_executable(getuids getuids.c)
endif (LINUX)
-