polybar-dwm/tests/CMakeLists.txt
Patrick Ziegler fd556525a8
New Tag Parser (#2303)
* 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
2020-12-17 20:37:28 +01:00

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
)