cmake: Write helgrind logs to stderr so we can see them
[socket_wrapper.git] / tests / CMakeLists.txt
1 project(tests C)
2
3 include_directories(
4   ${CMAKE_BINARY_DIR}
5   ${CMAKE_CURRENT_SOURCE_DIR}
6   ${CMAKE_SOURCE_DIR}/src
7   ${CMOCKA_INCLUDE_DIR}
8 )
9
10 set(TORTURE_LIBRARY torture)
11
12 # RFC862 echo server
13 add_executable(echo_srv echo_srv.c)
14 target_link_libraries(echo_srv ${SWRAP_REQUIRED_LIBRARIES})
15
16 add_library(${TORTURE_LIBRARY} STATIC torture.c)
17 target_link_libraries(${TORTURE_LIBRARY}
18     ${CMOCKA_LIBRARY}
19     ${SWRAP_REQUIRED_LIBRARIES}
20     ${CMAKE_THREAD_LIBS_INIT})
21
22 set(SWRAP_THREADED_TESTS
23     test_thread_sockets
24     test_thread_echo_tcp_connect
25     test_thread_echo_tcp_write_read
26     test_thread_echo_tcp_sendmsg_recvmsg
27     test_thread_echo_udp_send_recv)
28
29 set(SWRAP_TESTS
30     test_ioctl
31     test_tcp_listen
32     test_tcp_dup2
33     test_fcntl
34     test_echo_tcp_connect
35     test_echo_tcp_bind
36     test_echo_tcp_socket_options
37     test_echo_tcp_sendmsg_recvmsg
38     test_echo_tcp_write_read
39     test_echo_tcp_writev_readv
40     test_echo_tcp_get_peer_sock_name
41     test_echo_udp_sendto_recvfrom
42     test_echo_udp_send_recv
43     test_echo_udp_sendmsg_recvmsg
44     test_swrap_unit
45     test_max_sockets
46     test_close_failure
47     test_fork_thread_deadlock
48     test_tcp_socket_overwrite
49     ${SWRAP_THREADED_TESTS})
50
51 if (HAVE_STRUCT_MSGHDR_MSG_CONTROL)
52     set(SWRAP_TESTS ${SWRAP_TESTS} test_sendmsg_recvmsg_fd)
53 endif (HAVE_STRUCT_MSGHDR_MSG_CONTROL)
54
55 foreach(_SWRAP_TEST ${SWRAP_TESTS})
56     add_cmocka_test(${_SWRAP_TEST} ${_SWRAP_TEST}.c ${TORTURE_LIBRARY})
57
58     if (OSX)
59         set_property(
60             TEST
61                 ${_SWRAP_TEST}
62             PROPERTY
63                 ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${SOCKET_WRAPPER_LOCATION})
64     else ()
65         set_property(
66             TEST
67                 ${_SWRAP_TEST}
68             PROPERTY
69                 ENVIRONMENT LD_PRELOAD=${SOCKET_WRAPPER_LOCATION})
70     endif()
71 endforeach()
72
73 if (HELGRIND_TESTING)
74     find_program(VALGRIND_EXECUTABLE valgrind)
75     if (VALGRIND_EXECUTABLE)
76         set(VALGRIND_HELGRIND_OPTIONS -v -trace-children=yes --tool=helgrind --read-var-info=yes)
77
78         foreach(_TEST ${SWRAP_THREADED_TESTS})
79             set(_HELGRIND_TEST "helgrind_${_TEST}")
80
81             add_test(NAME ${_HELGRIND_TEST} COMMAND ${VALGRIND_EXECUTABLE} ${VALGRIND_HELGRIND_OPTIONS} ${CMAKE_CURRENT_BINARY_DIR}/${_TEST})
82             if (OSX)
83                 set_property(
84                     TEST
85                         ${_HELGRIND_TEST}
86                     PROPERTY
87                         ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${SOCKET_WRAPPER_LOCATION})
88             else ()
89                 set_property(
90                     TEST
91                         ${_HELGRIND_TEST}
92                     PROPERTY
93                         ENVIRONMENT LD_PRELOAD=${SOCKET_WRAPPER_LOCATION})
94             endif()
95         endforeach()
96     endif()
97 endif()
98
99 # test_fork_pthread
100 add_library(thread_deadlock SHARED thread_deadlock.c)
101 target_link_libraries(thread_deadlock ${CMAKE_THREAD_LIBS_INIT})
102 target_link_libraries(test_fork_thread_deadlock thread_deadlock)