[svn-r19458] Add CMake tests for check-vfd; includes new vfdTest.cmake script and OPTION HDF5_TEST_VFD

Tested: local linux
This commit is contained in:
Allen Byrne 2010-09-21 12:22:43 -05:00
parent d6c6a34a8f
commit 937cfb0c26
3 changed files with 79 additions and 0 deletions

View File

@ -1944,6 +1944,7 @@
./config/cmake/cacheinit.cmake
./config/cmake/grepTest.cmake
./config/cmake/runTest.cmake
./config/cmake/vfdTest.cmake
./config/cmake/CTestCustom.ctest
./config/cmake/ConfigureChecks.cmake
./CMakeLists.txt

View File

@ -0,0 +1,41 @@
# runTest.cmake executes a command and captures the output in a file. File is then compared
# against a reference file. Exit status of command can also be compared.
# arguments checking
IF (NOT TEST_PROGRAM)
MESSAGE (FATAL_ERROR "Require TEST_PROGRAM to be defined")
ENDIF (NOT TEST_PROGRAM)
#IF (NOT TEST_ARGS)
# MESSAGE (STATUS "Require TEST_ARGS to be defined")
#ENDIF (NOT TEST_ARGS)
#IF (NOT TEST_EXPECT)
# MESSAGE (STATUS "Require TEST_EXPECT to be defined")
#ENDIF (NOT TEST_EXPECT)
IF (NOT TEST_FOLDER)
MESSAGE ( FATAL_ERROR "Require TEST_FOLDER to be defined")
ENDIF (NOT TEST_FOLDER)
IF (NOT TEST_VFD)
MESSAGE (FATAL_ERROR "Require TEST_VFD to be defined")
ENDIF (NOT TEST_VFD)
MESSAGE (STATUS "USING ${TEST_VFD} ON COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
SET (ENV{HDF5_DRIVER} "${TEST_VFD}")
# run the test program, capture the stdout/stderr and the result var
EXECUTE_PROCESS (
COMMAND ${TEST_PROGRAM} ${TEST_ARGS}
WORKING_DIRECTORY ${TEST_FOLDER}
OUTPUT_VARIABLE TEST_ERROR
ERROR_VARIABLE TEST_ERROR
)
MESSAGE (STATUS "COMMAND Result: ${TEST_RESULT}")
# if the return value is !=${TEST_EXPECT} bail out
IF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
MESSAGE ( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}")
ENDIF (NOT ${TEST_RESULT} STREQUAL ${TEST_EXPECT})
# everything went fine...
MESSAGE ("Passed: The ${TEST_PROGRAM} program used vfd ${TEST_VFD}")

View File

@ -270,6 +270,43 @@ TARGET_LINK_LIBRARIES (ttsafe ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
ADD_TEST (NAME ttsafe COMMAND $<TARGET_FILE:ttsafe>)
IF (HDF5_TEST_VFD)
SET (VFD_LIST
sec2
stdio
core
split
multi
family
)
IF (DIRECT_VFD)
SET (VFD_LIST ${VFD_LIST} direct)
ENDIF (DIRECT_VFD)
MACRO (ADD_VFD_TEST vfdname resultcode)
FOREACH (test ${H5_TESTS})
ADD_TEST (
NAME VFD-${vfdname}-${test}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_PROGRAM=$<TARGET_FILE:${test}>"
-D "TEST_ARGS:STRING="
-D "TEST_VFD:STRING=${vfdname}"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-P "${HDF5_RESOURCES_DIR}/vfdTest.cmake"
)
ENDFOREACH (test ${H5_TESTS})
ENDMACRO (ADD_VFD_TEST)
# Run test with different Virtual File Driver
FOREACH (vfd ${VFD_LIST})
ADD_VFD_TEST (${vfd} 0)
ENDFOREACH (vfd ${VFD_LIST})
ENDIF (HDF5_TEST_VFD)
##############################################################################
##############################################################################
### T H E G E N E R A T O R S ###