From 03e0ce53d542f8a1116681f8e211c0501cd3ef8d Mon Sep 17 00:00:00 2001 From: Arif Hasanic Date: Sun, 1 Feb 2026 17:15:17 +0100 Subject: [PATCH] add coverage --- .gitea/workflows/ci.yml | 5 +++++ CMakeLists.txt | 21 +++++++++++++++++++-- tests/string_helper_tests.cpp | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tests/string_helper_tests.cpp diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 5e0abc0..a4d608f 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -24,3 +24,8 @@ jobs: - name: Build run: cmake --build build --config Release -j "$(nproc)" + + - name: Test + run: | + cd build + ctest --output-on-failure diff --git a/CMakeLists.txt b/CMakeLists.txt index fd165d9..c0297bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 4.2.0) project(bar) +include(CTest) +enable_testing() + set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -8,8 +11,8 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG -Wall -Wextra -Wpedantic -Werror") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -Wall -Wextra -Wpedantic") -set(CMAKE_C_COMPILER "clang") -set(CMAKE_CXX_COMPILER "clang++") +set(CMAKE_C_COMPILER "/usr/bin/clang") +set(CMAKE_CXX_COMPILER "/usr/bin/clang++") find_package(PkgConfig REQUIRED) @@ -59,6 +62,20 @@ add_executable(bar main.cpp) target_link_libraries(bar bar_lib ${GTKMM_LIBRARIES} ${LAYERSHELL_LIBRARIES} ${WEBKIT_LIBRARIES} ${CURL_LIBRARIES} nlohmann_json::nlohmann_json) +# ---- Tests (Catch2) ---- +find_package(Catch2 3 REQUIRED) + +add_executable(bar_tests + tests/string_helper_tests.cpp +) +target_include_directories(bar_tests PRIVATE + include +) +target_link_libraries(bar_tests PRIVATE Catch2::Catch2WithMain) + +include(Catch) +catch_discover_tests(bar_tests) + # Copy all CSS files in resources/ into build and user config directories file(GLOB RES_CSS_FILES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/resources/*.css" diff --git a/tests/string_helper_tests.cpp b/tests/string_helper_tests.cpp new file mode 100644 index 0000000..b78264b --- /dev/null +++ b/tests/string_helper_tests.cpp @@ -0,0 +1,24 @@ +#include + +#include "helpers/string.hpp" + +TEST_CASE("StringHelper::split by char", "[string]") { + const auto tokens = StringHelper::split("a,b,,c", ','); + REQUIRE(tokens.size() == 3); + REQUIRE(tokens[0] == "a"); + REQUIRE(tokens[1] == "b"); + REQUIRE(tokens[2] == "c"); +} + +TEST_CASE("StringHelper::split by string", "[string]") { + const auto tokens = StringHelper::split("one::two::three", "::"); + REQUIRE(tokens.size() == 3); + REQUIRE(tokens[0] == "one"); + REQUIRE(tokens[1] == "two"); + REQUIRE(tokens[2] == "three"); +} + +TEST_CASE("StringHelper::trimToSize", "[string]") { + REQUIRE(StringHelper::trimToSize("hello", 10) == "hello"); + REQUIRE(StringHelper::trimToSize("hello world", 5) == "hello..."); +}