3 set(TESTSUITE_LIBRARIES ${NWRAP_REQUIRED_LIBRARIES} ${CMOCKA_LIBRARY})
4 string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
6 add_library(nss_nwrap SHARED nss_nwrap.c)
7 target_compile_options(nss_nwrap
9 ${DEFAULT_C_COMPILE_FLAGS})
10 target_include_directories(nss_nwrap
13 ${CMOCKA_INCLUDE_DIR})
15 set(HOMEDIR ${CMAKE_CURRENT_BINARY_DIR})
17 configure_file(passwd.in ${CMAKE_CURRENT_BINARY_DIR}/passwd @ONLY)
18 configure_file(group.in ${CMAKE_CURRENT_BINARY_DIR}/group @ONLY)
19 configure_file(hosts.in ${CMAKE_CURRENT_BINARY_DIR}/hosts @ONLY)
20 configure_file(shadow.in ${CMAKE_CURRENT_BINARY_DIR}/shadow @ONLY)
27 test_gethostby_name_addr
31 list(APPEND NWRAP_TESTS test_shadow)
34 function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
36 string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
37 if (CMAKE_BUILD_TYPE_LOWER STREQUAL "addresssanitizer")
38 find_library(ASAN_LIBRARY
41 foreach(version RANGE 10 1)
43 find_library(ASAN_LIBRARY libasan.so.${version})
51 list(APPEND PRELOAD_LIBRARIES ${ASAN_LIBRARY})
53 list(APPEND PRELOAD_LIBRARIES ${NSS_WRAPPER_LOCATION})
56 set(TORTURE_ENVIRONMENT "DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${NSS_WRAPPER_LOCATION}")
58 string(REPLACE ";" ":" _TMP_ENV "${PRELOAD_LIBRARIES}")
59 set(TORTURE_ENVIRONMENT "LD_PRELOAD=${_TMP_ENV}")
62 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_PASSWD=${CMAKE_CURRENT_BINARY_DIR}/passwd)
63 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_GROUP=${CMAKE_CURRENT_BINARY_DIR}/group)
64 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_SHADOW=${CMAKE_CURRENT_BINARY_DIR}/shadow)
65 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_HOSTS=${CMAKE_CURRENT_BINARY_DIR}/hosts)
66 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_MODULE_SO_PATH=${CMAKE_CURRENT_BINARY_DIR}/libnss_nwrap.so)
67 list(APPEND TORTURE_ENVIRONMENT NSS_WRAPPER_MODULE_FN_PREFIX=nwrap)
72 ENVIRONMENT "${TORTURE_ENVIRONMENT}")
74 foreach(_NWRAP_TEST ${NWRAP_TESTS})
75 add_cmocka_test(${_NWRAP_TEST}
76 SOURCES ${_NWRAP_TEST}.c
77 COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS}
78 LINK_LIBRARIES ${TESTSUITE_LIBRARIES}
79 LINK_OPTIONS ${DEFAULT_LINK_FLAGS})
81 target_compile_options(${_NWRAP_TEST}
85 target_include_directories(${_NWRAP_TEST}
88 ${CMOCKA_INCLUDE_DIR})
89 add_cmocka_test_environment(${_NWRAP_TEST})
93 # This is needed to check the hash in tests/shadow.in
94 target_link_libraries(test_shadow PRIVATE crypt)
97 target_link_libraries(test_nwrap_vector PRIVATE ${CMAKE_THREAD_LIBS_INIT})
98 target_link_libraries(test_gethostby_name_addr PRIVATE ${CMAKE_THREAD_LIBS_INIT})
100 # Test nwrap without wrapping so the libc functions are called
101 if (NOT CMAKE_BUILD_TYPE_LOWER MATCHES "sanitizer")
102 add_cmocka_test(test_nwrap_disabled
103 SOURCES test_nwrap_disabled.c
104 COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS}
105 LINK_LIBRARIES ${TESTSUITE_LIBRARIES}
106 LINK_OPTIONS ${DEFAULT_LINK_FLAGS})
107 target_include_directories(test_nwrap_disabled
110 ${CMOCKA_INCLUDE_DIR})
115 ENVIRONMENT LD_PRELOAD=${NSS_WRAPPER_LOCATION})