From 937cfb0c26fe7f2a38cc379ae71a4c6a5f5d3087 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 21 Sep 2010 12:22:43 -0500 Subject: [svn-r19458] Add CMake tests for check-vfd; includes new vfdTest.cmake script and OPTION HDF5_TEST_VFD Tested: local linux --- MANIFEST | 1 + config/cmake/vfdTest.cmake | 41 +++++++++++++++++++++++++++++++++++++++++ test/CMakeLists.txt | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 config/cmake/vfdTest.cmake diff --git a/MANIFEST b/MANIFEST index 5321cb7..c8b4156 100644 --- a/MANIFEST +++ b/MANIFEST @@ -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 diff --git a/config/cmake/vfdTest.cmake b/config/cmake/vfdTest.cmake new file mode 100644 index 0000000..eaa019a --- /dev/null +++ b/config/cmake/vfdTest.cmake @@ -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}") + diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0bec69f..906afb5 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -270,6 +270,43 @@ TARGET_LINK_LIBRARIES (ttsafe ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) ADD_TEST (NAME ttsafe COMMAND $) +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=$" + -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 ### -- cgit v0.12