1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
link_directories(
${PROJECT_BINARY_DIR}/test
)
# Build gtest
add_library(gtest STATIC /usr/src/gtest/src/gtest-all.cc)
target_include_directories(gtest
PUBLIC
/usr/include
/usr/src/gtest
)
add_library(gtest_main STATIC /usr/src/gtest/src/gtest_main.cc)
target_link_libraries(gtest_main gtest)
execute_process(COMMAND cmake -E remove_directory ${CMAKE_BINARY_DIR}/test_results)
execute_process(COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/test_results)
set(tests
console_TEST.cc)
#################################################
# Build all the tests
foreach(GTEST_SOURCE_file ${tests})
string(REGEX REPLACE ".cc" "" BINARY_NAME ${GTEST_SOURCE_file})
add_executable(${BINARY_NAME} ${GTEST_SOURCE_file})
add_dependencies(${BINARY_NAME}
console_bridge
gtest
gtest_main)
target_link_libraries(${BINARY_NAME}
gtest_main
gtest
console_bridge)
if (UNIX AND NOT ANDROID)
target_link_libraries(${BINARY_NAME} pthread)
endif()
add_test(NAME ${BINARY_NAME}
COMMAND ${BINARY_NAME}
--gtest_output=xml:${CMAKE_BINARY_DIR}/test_results/${BINARY_NAME}.xml)
set_tests_properties(${BINARY_NAME} PROPERTIES TIMEOUT 240)
endforeach()
find_package(PythonInterp 3 REQUIRED)
if(NOT PYTHONINTERP_FOUND)
message(WARNING "No PythonInterp found. Linters will not be executed")
return()
endif()
find_program(WGET_EXE wget)
if(WGET_EXE)
message(STATUS "Found WGet: ${WGET_EXE}")
add_custom_target(wget_cppcheck
COMMAND ${WGET_EXE} -q -O cppcheck.py https://raw.githubusercontent.com/ament/ament_lint/master/ament_cppcheck/ament_cppcheck/main.py
)
add_test(NAME console_bridge_cppcheck
COMMAND "${PYTHON_EXECUTABLE}"
"cppcheck.py"
"--language=c++" "${PROJECT_SOURCE_DIR}/src" "${PROJECT_SOURCE_DIR}/include"
)
add_custom_target(wget_cpplint
COMMAND wget -q -O cpplint.py https://raw.githubusercontent.com/ament/ament_lint/master/ament_cpplint/ament_cpplint/cpplint.py
)
add_test(NAME console_bridge_cpplint
COMMAND "${PYTHON_EXECUTABLE}"
"cpplint.py"
"--counting=detailed"
"--extensions=cpp,h"
"--linelength=100"
"--filter=-build/c++11,-runtime/references,-whitespace/braces,-whitespace/indent,-whitespace/parens,-whitespace/semicolon"
"${PROJECT_SOURCE_DIR}/include/console_bridge/console.h"
"${PROJECT_SOURCE_DIR}/src/console.cpp"
)
add_dependencies(console_bridge wget_cppcheck wget_cpplint)
else()
message(WARNING "wget not found. Linters will not be executed")
endif()
|