fd556525a8
* refactor(color): Use enum class for color type * Add testcases for tag parser * Make tag parser a pull-style parser Being able to parse single elements at a time gives us more fine-grained error messages, we can also parse as much as possible and only stop after an exception. * fix(color): Parser did not check for invalid chars * tag parser: First full implementation * tag parser: Fix remaining failing tests * tag parser: Replace old parser * tag parser: Treat alignment as formatting tag Makes the structure less complex and the alignment tags really are formatting tags, they are structurally no different from the %{R} tag. * tag parser: Cleanup type definitions All type definitions for tags now live in tags/types.hpp, the parser.hpp only contains the definitions necessary for actually calling the parser, this shouldn't be included in many places (only places that actually do parsing). But many places need the definitions for the tags themselves. * Rename components/parser to tags/dispatch * tag parser: Cleanup * Add changelog
72 lines
2.1 KiB
CMake
72 lines
2.1 KiB
CMake
include_directories(${dirs})
|
|
include_directories(${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
# Download and unpack googletest at configure time {{{
|
|
configure_file(
|
|
CMakeLists.txt.in
|
|
${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt
|
|
)
|
|
execute_process( COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
|
RESULT_VARIABLE result
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
|
|
|
|
if(result)
|
|
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
|
|
endif()
|
|
|
|
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
|
RESULT_VARIABLE result
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
|
|
|
|
if(result)
|
|
message(FATAL_ERROR "Build step for googletest failed: ${result}")
|
|
endif()
|
|
|
|
# Add googletest directly to our build. This defines
|
|
# the gtest, gtest_main, gmock and gmock_main targets.
|
|
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
|
|
${CMAKE_BINARY_DIR}/googletest-build
|
|
EXCLUDE_FROM_ALL)
|
|
|
|
# }}}
|
|
|
|
# Compile all unit tests with 'make all_unit_tests'
|
|
add_custom_target(all_unit_tests
|
|
COMMENT "Building all unit test")
|
|
|
|
function(add_unit_test source_file)
|
|
string(REPLACE "/" "_" testname ${source_file})
|
|
set(name "unit_test.${testname}")
|
|
|
|
add_executable(${name} unit_tests/${source_file}.cpp)
|
|
|
|
# Link against gmock (this automatically links against gtest)
|
|
target_link_libraries(${name} poly gmock_main)
|
|
add_test(NAME ${name} COMMAND ${name})
|
|
|
|
add_dependencies(all_unit_tests ${name})
|
|
endfunction()
|
|
|
|
add_unit_test(utils/actions)
|
|
add_unit_test(utils/color)
|
|
add_unit_test(utils/command)
|
|
add_unit_test(utils/math)
|
|
add_unit_test(utils/memory)
|
|
add_unit_test(utils/scope)
|
|
add_unit_test(utils/string)
|
|
add_unit_test(utils/file)
|
|
add_unit_test(utils/process)
|
|
add_unit_test(components/command_line)
|
|
add_unit_test(components/bar)
|
|
add_unit_test(components/config_parser)
|
|
add_unit_test(drawtypes/label)
|
|
add_unit_test(drawtypes/ramp)
|
|
add_unit_test(drawtypes/iconset)
|
|
add_unit_test(tags/parser)
|
|
|
|
# Run make check to build and run all unit tests
|
|
add_custom_target(check
|
|
COMMAND GTEST_COLOR=1 ctest --output-on-failure
|
|
DEPENDS all_unit_tests
|
|
)
|