cmake: Define large file support for tests
[socket_wrapper.git] / tests / CMakeLists.txt
index 72cda718758b90cc07081b462e6735c463cbbdad..17d8d3ceb5c6d0010115fec4b144b00515f55187 100644 (file)
@@ -7,6 +7,11 @@ include_directories(
   ${CMOCKA_INCLUDE_DIR}
 )
 
+# Required for cmocka >= 1.1.6
+if (TARGET cmocka::cmocka)
+    set(CMOCKA_LIBRARY cmocka::cmocka)
+endif()
+
 set(TORTURE_LIBRARY torture)
 
 # RFC862 echo server
@@ -32,6 +37,15 @@ target_link_libraries(${TORTURE_LIBRARY}
     ${SWRAP_REQUIRED_LIBRARIES}
     ${CMAKE_THREAD_LIBS_INIT})
 
+add_library(swrap_fake_uid_wrapper SHARED swrap_fake_uid_wrapper.c)
+target_compile_options(swrap_fake_uid_wrapper
+                       PRIVATE
+                           ${DEFAULT_C_COMPILE_FLAGS}
+                           -D_GNU_SOURCE)
+#target_include_directories(swrap_fake_uid_wrapper
+#        PRIVATE ${CMAKE_BINARY_DIR} ${CMOCKA_INCLUDE_DIR})
+set(SWRAP_FAKE_UID_WRAPPER_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}swrap_fake_uid_wrapper${CMAKE_SHARED_LIBRARY_SUFFIX}")
+
 set(SWRAP_THREADED_TESTS
     test_thread_sockets
     test_thread_echo_tcp_connect
@@ -44,11 +58,14 @@ set(SWRAP_TESTS
     test_tcp_listen
     test_tcp_dup2
     test_fcntl
+    test_fcntl_lock
     test_echo_tcp_connect
     test_echo_tcp_bind
     test_echo_tcp_socket_options
     test_echo_tcp_sendmsg_recvmsg
+    test_echo_tcp_sendmmsg_recvmmsg
     test_echo_tcp_write_read
+    test_echo_tcp_poll
     test_echo_tcp_writev_readv
     test_echo_tcp_get_peer_sock_name
     test_echo_udp_sendto_recvfrom
@@ -56,12 +73,14 @@ set(SWRAP_TESTS
     test_echo_udp_sendmsg_recvmsg
     test_swrap_unit
     test_max_sockets
+    test_public_functions
     test_close_failure
     test_tcp_socket_overwrite
+    test_syscall_uwrap
     ${SWRAP_THREADED_TESTS})
 
 if (HAVE_STRUCT_MSGHDR_MSG_CONTROL)
-    set(SWRAP_TESTS ${SWRAP_TESTS} test_sendmsg_recvmsg_fd)
+    set(SWRAP_TESTS ${SWRAP_TESTS} test_sendmsg_recvmsg_fd test_echo_tcp_sendmsg_recvmsg_fd)
 endif (HAVE_STRUCT_MSGHDR_MSG_CONTROL)
 
 function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
@@ -83,6 +102,7 @@ function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
     if (ASAN_LIBRARY)
         list(APPEND PRELOAD_LIBRARIES ${ASAN_LIBRARY})
     endif()
+    list(APPEND PRELOAD_LIBRARIES ${SWRAP_FAKE_UID_WRAPPER_LOCATION})
     list(APPEND PRELOAD_LIBRARIES ${SOCKET_WRAPPER_LOCATION})
 
     if (OSX)
@@ -107,11 +127,16 @@ function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
                     ENVIRONMENT "${TORTURE_ENVIRONMENT}")
 endfunction()
 
+if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+    message(STATUS "Enabling large file support for tests")
+    set(LFS_CFLAGS "-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
+endif()
+
 foreach(_SWRAP_TEST ${SWRAP_TESTS})
     add_cmocka_test(${_SWRAP_TEST}
                     SOURCES ${_SWRAP_TEST}.c
-                    COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} -D_GNU_SOURCE
-                    LINK_LIBRARIES ${TORTURE_LIBRARY}
+                    COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} -D_GNU_SOURCE ${LFS_CFLAGS}
+                    LINK_LIBRARIES ${TORTURE_LIBRARY} socket_wrapper_noop
                     LINK_OPTIONS ${DEFAULT_LINK_FLAGS})
     add_cmocka_test_environment(${_SWRAP_TEST})
 endforeach()