cmake_minimum_required( VERSION 3.20 )
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
add_executable( kv kv.cpp )
target_link_libraries( kv cparse )
# Smoke test: pins the walkthrough's documented "Trying it" transcript.
add_test(
NAME kv.smoke
COMMAND ${CMAKE_COMMAND}
-DEXE=$<TARGET_FILE:kv>
-DARG=${CMAKE_CURRENT_SOURCE_DIR}/../tests/fixture.ini
-DEXPECTED=${CMAKE_CURRENT_SOURCE_DIR}/../tests/expected.txt
-P ${CMAKE_CURRENT_SOURCE_DIR}/../../run_and_diff.cmake
)
# Regression guard: running with no argument at all used to crash
# (std::string construction from argv[1]==nullptr throws std::logic_error)
# instead of printing a usage message and exiting 1.
add_test(
NAME kv.no_argument
COMMAND ${CMAKE_COMMAND}
-DEXE=$<TARGET_FILE:kv>
-DEXPECTED=${CMAKE_CURRENT_SOURCE_DIR}/../tests/expected-usage.txt
-DMATCH=1
-DRC=1
-P ${CMAKE_CURRENT_SOURCE_DIR}/../../run_and_diff.cmake
)