set(OVG_TEST_SOURCES
  harness.cpp
  test_common.cpp
  test_csv_parser.cpp
  test_selector.cpp
  test_http_get.cpp
  test_ovpn.cpp
  test_egress.cpp
  test_socks5.cpp
  test_health.cpp)

# The netstack only exists in a tunnel build (see src/CMakeLists.txt), so its
# tests come and go with it rather than being #ifdef'd to an empty file.
if(OVG_WITH_TUNNEL)
  list(APPEND OVG_TEST_SOURCES test_netstack.cpp)
endif()

add_executable(ovg_tests ${OVG_TEST_SOURCES})

target_include_directories(ovg_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(ovg_tests PRIVATE
  OVG_TEST_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
target_link_libraries(ovg_tests PRIVATE
  ovg_selector ovg_ovpn ovg_egress ovg_socks5 ovg_health)
if(OVG_WITH_TUNNEL)
  target_link_libraries(ovg_tests PRIVATE ovg_netstack)
endif()

add_test(NAME unit COMMAND ovg_tests)
