Add CTest smoke tests for FLAIM tools and database

This commit is contained in:
OpenAI
2026-06-05 16:57:58 +00:00
committed by Mario Fetka
parent a7f3d87443
commit ecdbd69eaf
3 changed files with 93 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.16)
project(nwflaim VERSION 1.0 LANGUAGES CXX)
include(GNUInstallDirs)
include(CTest)
option(NWFLAIM_BUILD_SHARED "Build shared nwflaim libraries" ON)
option(NWFLAIM_BUILD_STATIC "Build static nwflaim libraries" OFF)
@@ -572,6 +573,37 @@ if(NWFLAIM_BUILD_TOOLS)
endif()
endif()
if(BUILD_TESTING AND NWFLAIM_BUILD_TOOLS)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/NWFlaimDbSmokeTest.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/NWFlaimDbSmokeTest.cmake
@ONLY)
add_test(NAME nwflaim.flmcheckdb.usage
COMMAND ${CMAKE_COMMAND}
-DNWFLAIM_TEST_COMMAND=$<TARGET_FILE:flmcheckdb_tool>
-DNWFLAIM_TEST_EXPECT=Usage:
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/NWFlaimUsageTest.cmake)
set_tests_properties(nwflaim.flmcheckdb.usage PROPERTIES LABELS nwflaim)
add_test(NAME nwflaim.database.create-and-check
COMMAND ${CMAKE_COMMAND}
-DNWFLAIM_GIGATEST=$<TARGET_FILE:flmgigatest_tool>
-DNWFLAIM_CHECKDB=$<TARGET_FILE:flmcheckdb_tool>
-DNWFLAIM_TEST_WORKDIR=${CMAKE_CURRENT_BINARY_DIR}/ctest/nwflaim-db
-P ${CMAKE_CURRENT_BINARY_DIR}/NWFlaimDbSmokeTest.cmake)
set_tests_properties(nwflaim.database.create-and-check PROPERTIES LABELS nwflaim)
if(NWFLAIM_BUILD_XFLAIM)
add_test(NAME nwflaim.xflmcheckdb.usage
COMMAND ${CMAKE_COMMAND}
-DNWFLAIM_TEST_COMMAND=$<TARGET_FILE:xflmcheckdb_tool>
-DNWFLAIM_TEST_EXPECT=Usage:
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/NWFlaimUsageTest.cmake)
set_tests_properties(nwflaim.xflmcheckdb.usage PROPERTIES LABELS nwflaim)
endif()
endif()
# Install public headers below nw-prefixed include directories so they do not
# conflict with any system or distro FLAIM headers.
set(NWFLAIM_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/nwflaim")

View File

@@ -0,0 +1,40 @@
if(NOT DEFINED NWFLAIM_GIGATEST)
message(FATAL_ERROR "NWFLAIM_GIGATEST is required")
endif()
if(NOT DEFINED NWFLAIM_CHECKDB)
message(FATAL_ERROR "NWFLAIM_CHECKDB is required")
endif()
if(NOT DEFINED NWFLAIM_TEST_WORKDIR)
message(FATAL_ERROR "NWFLAIM_TEST_WORKDIR is required")
endif()
set(ENV{TERM} xterm)
file(REMOVE_RECURSE "${NWFLAIM_TEST_WORKDIR}")
file(MAKE_DIRECTORY "${NWFLAIM_TEST_WORKDIR}" "${NWFLAIM_TEST_WORKDIR}/data" "${NWFLAIM_TEST_WORKDIR}/rfl" "${NWFLAIM_TEST_WORKDIR}/tmp")
set(_db "${NWFLAIM_TEST_WORKDIR}/gigatest.db")
execute_process(
COMMAND "${NWFLAIM_GIGATEST}" -b -n${_db} -dd${NWFLAIM_TEST_WORKDIR}/data -dr${NWFLAIM_TEST_WORKDIR}/rfl -t4 32
WORKING_DIRECTORY "${NWFLAIM_TEST_WORKDIR}"
RESULT_VARIABLE _giga_result
OUTPUT_VARIABLE _giga_stdout
ERROR_VARIABLE _giga_stderr
TIMEOUT 60)
if(NOT _giga_result EQUAL 0)
message(STATUS "nwflmgigatest stdout:\n${_giga_stdout}")
message(STATUS "nwflmgigatest stderr:\n${_giga_stderr}")
message(FATAL_ERROR "nwflmgigatest failed with exit code ${_giga_result}")
endif()
execute_process(
COMMAND "${NWFLAIM_CHECKDB}" "${_db}" -b -i -dd${NWFLAIM_TEST_WORKDIR}/data -dr${NWFLAIM_TEST_WORKDIR}/rfl -t${NWFLAIM_TEST_WORKDIR}/tmp
WORKING_DIRECTORY "${NWFLAIM_TEST_WORKDIR}"
RESULT_VARIABLE _check_result
OUTPUT_VARIABLE _check_stdout
ERROR_VARIABLE _check_stderr
TIMEOUT 60)
if(NOT _check_result EQUAL 0)
message(STATUS "nwflmcheckdb stdout:\n${_check_stdout}")
message(STATUS "nwflmcheckdb stderr:\n${_check_stderr}")
message(FATAL_ERROR "nwflmcheckdb failed with exit code ${_check_result}")
endif()

View File

@@ -0,0 +1,21 @@
if(NOT DEFINED NWFLAIM_TEST_COMMAND)
message(FATAL_ERROR "NWFLAIM_TEST_COMMAND is required")
endif()
if(NOT DEFINED NWFLAIM_TEST_EXPECT)
set(NWFLAIM_TEST_EXPECT "Usage:")
endif()
set(ENV{TERM} xterm)
execute_process(
COMMAND "${NWFLAIM_TEST_COMMAND}" -?
RESULT_VARIABLE _result
OUTPUT_VARIABLE _stdout
ERROR_VARIABLE _stderr
TIMEOUT 20)
set(_combined "${_stdout}\n${_stderr}")
if(NOT _combined MATCHES "${NWFLAIM_TEST_EXPECT}")
message(STATUS "stdout:\n${_stdout}")
message(STATUS "stderr:\n${_stderr}")
message(FATAL_ERROR "${NWFLAIM_TEST_COMMAND} did not print expected usage text")
endif()