Add CTest smoke tests for FLAIM tools and database
This commit is contained in:
@@ -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")
|
||||
|
||||
40
cmake/NWFlaimDbSmokeTest.cmake.in
Normal file
40
cmake/NWFlaimDbSmokeTest.cmake.in
Normal 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()
|
||||
21
cmake/NWFlaimUsageTest.cmake
Normal file
21
cmake/NWFlaimUsageTest.cmake
Normal 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()
|
||||
Reference in New Issue
Block a user