cmake/KatranTest.cmake (62 lines of code) (raw):
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
include(CTest)
if(BUILD_TESTS)
find_library(BOOST_SYSTEM libboost_system.a boost_system)
find_package(FOLLY CONFIG REQUIRED)
find_library(GTEST gtest)
find_path(GTEST_INCLUDE_DIR gtest)
find_library(GMOCK gmock)
find_library(PTHREAD pthread)
include(GoogleTest)
endif()
function(katran_add_test)
if(NOT BUILD_TESTS)
return()
endif()
set(options)
set(one_value_args TARGET WORKING_DIRECTORY PREFIX)
set(multi_value_args SOURCES DEPENDS INCLUDES EXTRA_ARGS)
cmake_parse_arguments(PARSE_ARGV 0 KATRAN_TEST "${options}" "${one_value_args}" "${multi_value_args}")
if(NOT KATRAN_TEST_TARGET)
message(FATAL_ERROR "The TARGET parameter is mandatory.")
endif()
if(NOT KATRAN_TEST_SOURCES)
set(KATRAN_TEST_SOURCES "${KATRAN_TEST_TARGET}.cpp")
endif()
add_executable(${KATRAN_TEST_TARGET}
"${KATRAN_TEST_SOURCES}"
# implementation of 'main()' that also calls folly::init
"${KATRAN_FBCODE_ROOT}/katran/lib/tests/common/TestMain.cpp"
)
target_link_libraries(${KATRAN_TEST_TARGET} PRIVATE
"${KATRAN_TEST_DEPENDS}"
${GTEST}
)
target_include_directories(${KATRAN_TEST_TARGET} PRIVATE
${BPF_INCLUDE_DIRS}
${GTEST_INCLUDE_DIR}
${FOLLY_INCLUDE_DIR}
${KATRAN_INCLUDE_DIR}
${KATRAN_EXTRA_INCLUDE_DIRECTORIES}
${KATRAN_TEST_INCLUDES}
)
gtest_discover_tests("${KATRAN_TEST_TARGET}"
EXTRA_ARGS "${KATRAN_TEST_EXTRA_ARGS}"
WORKING_DIRECTORY "${KATRAN_TEST_WORKING_DIRECTORY}"
TEST_PREFIX ${KATRAN_TEST_PREFIX}
TEST_LIST KATRAN_TEST_CASES)
set_tests_properties(${KATRAN_TEST_CASES} PROPERTIES TIMEOUT 120)
endfunction()