feat(EditorConfig): Add .editorconfig files
This commit is contained in:
parent
1f8dce3a86
commit
96477dfba3
12 changed files with 400 additions and 0 deletions
01/tests
80
01/tests/CMakeLists.txt
Normal file
80
01/tests/CMakeLists.txt
Normal file
|
@ -0,0 +1,80 @@
|
|||
set(PROJECT_NAME ${PROJECT_NAME} PARENT_SCOPE )
|
||||
# GoogleTest requires at least C++14
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Get GoogleTest
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
|
||||
)
|
||||
# For Windows: Prevent overriding the parent project's compiler/linker settings
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_executable(tests ${TESTS})
|
||||
|
||||
# Link test executable against gtest & gtest_main
|
||||
target_link_libraries(
|
||||
tests
|
||||
GTest::gtest_main
|
||||
)
|
||||
|
||||
target_include_directories(tests PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
)
|
||||
|
||||
# Discover tests
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(tests)
|
||||
add_dependencies(tests ${PROJECT_NAME})
|
||||
|
||||
# The following section is inspired by https://github.com/cmake-modules/lcov
|
||||
if(ENABLE_COVERAGE)
|
||||
message("Test coverage enabled")
|
||||
# set(exclude_dir "*/tests/* */_deps/* /usr/include/c++/11/**/* /usr/include/c++/**/*")
|
||||
# set(exclude_dir "*/tests/* */_deps/* /usr/include/c++/11/tuple /usr/include/c++/11/**/*")
|
||||
|
||||
# Check for lcov, gcov and genhtml
|
||||
find_program(GCOV gcov)
|
||||
if (NOT GCOV)
|
||||
message(WARNING "gcov not found")
|
||||
endif()
|
||||
find_program(LCOV lcov)
|
||||
if (NOT LCOV)
|
||||
message(WARNING "lcov not found")
|
||||
endif()
|
||||
find_program(GENHTML genhtml)
|
||||
if (NOT GENHTML)
|
||||
message(WARNING "genhtml not found")
|
||||
endif()
|
||||
|
||||
if (GCOV AND LCOV AND GENHTML)
|
||||
# Set C compiler flags
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage -fprofile-arcs -ftest-coverage")
|
||||
# Set C++ compiler flags
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage")
|
||||
|
||||
set(covname cov.info)
|
||||
add_custom_target(coverage DEPENDS ${covname})
|
||||
add_dependencies(coverage tests ${PROJECT_NAME})
|
||||
add_custom_command(
|
||||
OUTPUT ${covname}
|
||||
COMMAND ${LCOV} -c -o ${covname} -d ${CMAKE_BINARY_DIR}/tests/CMakeFiles/tests.dir/ -b . --gcov-tool ${GCOV}
|
||||
COMMAND ${LCOV} -r ${covname} -o ${covname} "*/tests/*" "*/_deps/**/*" "/usr/include/c++/**/*" "/usr/include/c++/11/**/*"
|
||||
COMMAND ${LCOV} -l ${covname}
|
||||
COMMAND ${GENHTML} ${covname} -output coverage
|
||||
COMMAND ${LCOV} -l ${covname} 2>/dev/null | grep Total | sed 's/|//g' | sed 's/Total://g' | awk '{print $1}' | sed s/%//g > coverage/total
|
||||
)
|
||||
set_directory_properties(PROPERTIES
|
||||
ADDITIONAL_CLEAN_FILES ${covname}
|
||||
)
|
||||
set_directory_properties(PROPERTIES
|
||||
ADDITIONAL_CLEAN_FILES coverage/
|
||||
)
|
||||
else()
|
||||
message(WARNING "Cannot enable coverage. Missing the required tools")
|
||||
endif()
|
||||
endif()
|
Loading…
Add table
Add a link
Reference in a new issue