# SPDX-FileCopyrightText: Copyright 2026 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause

project(flrpc_tests)

set(TARGET "flrpc_qt.tests")

set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_CTEST_ARGUMENTS "--timeout;600;--stop-on-failure;--output-on-failure;")
set(CMAKE_DISABLE_FIND_PACKAGE_GMock TRUE)

set(SOURCE_DIR ${PROJECT_SOURCE_DIR})
set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})

set(FLRPC_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/src/include")

find_package(GTest REQUIRED)

message(STATUS "${target} tests added...")

# Get path of tests results directory
if(NOT FLRPC_TEST_RESULTS_DIR)
  set(FLRPC_TEST_RESULTS_DIR ${flrpc_BINARY_DIR}/testresults)
else()
  set(FLRPC_TEST_RESULTS_DIR ${FLRPC_TEST_RESULTS_DIR})
endif()
if(NOT EXISTS ${FLRPC_TEST_RESULTS_DIR})
  file(MAKE_DIRECTORY ${FLRPC_TEST_RESULTS_DIR})
  if(NOT EXISTS ${FLRPC_TEST_RESULTS_DIR})
    message(FATAL_ERROR "Can`t create directory ${FLRPC_TEST_RESULTS_DIR}")
  endif()
endif()

set(SOURCES_FILES
  "test_utils.cc"
)

add_executable(${TARGET} ${SOURCES_FILES})
target_include_directories(${TARGET} PRIVATE ${GTEST_INCLUDE_DIR} ${CMAKE_SOURCE_DIR} ${FLRPC_INCLUDE_DIR})
target_link_libraries(${TARGET} PRIVATE GTest::GTest GTest::gtest_main flrpc_qt)

add_test(NAME ${TARGET} COMMAND ${TARGET} --gtest_output=xml:${FLRPC_TEST_RESULTS_DIR}/${TARGET}.xml)

add_custom_target(
  run_${TARGET}
  COMMAND ${CMAKE_CTEST_COMMAND} ${CMAKE_CTEST_ARGUMENTS} -R ${TARGET}
  COMMAND_EXPAND_LISTS
  WORKING_DIRECTORY ${flrpc_BINARY_DIR}/tests
  DEPENDS ${TARGET})
