find_package(Catch2 3 QUIET)
if(NOT Catch2_FOUND)
    include(FetchContent)
    FetchContent_Declare(Catch2
        GIT_REPOSITORY https://github.com/catchorg/Catch2.git
        GIT_TAG v3.7.1)
    FetchContent_MakeAvailable(Catch2)
endif()

add_executable(alvin_tests
    test_core.cpp
    test_json.cpp)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    target_sources(alvin_tests PRIVATE test_linux.cpp)
    target_link_libraries(alvin_tests PRIVATE PkgConfig::XKBCOMMON)
endif()
# Tests exercise internal helpers too, so they see the private source tree.
target_include_directories(alvin_tests PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_link_libraries(alvin_tests PRIVATE alvin::alvin Catch2::Catch2WithMain)

include(Catch)
catch_discover_tests(alvin_tests)
