summaryrefslogtreecommitdiffstats
path: root/config/cmake_ext_mod/grepTest.cmake
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2015-08-20 17:03:29 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2015-08-20 17:03:29 (GMT)
commit1b2b0bd5a30cbc4227457abd08f563a8fd8c8b68 (patch)
treef3e820daa24477263f5fc3efd43bf459865f260b /config/cmake_ext_mod/grepTest.cmake
parent1436a07905193713568304dd00b26ca18e982e6f (diff)
downloadhdf5-1b2b0bd5a30cbc4227457abd08f563a8fd8c8b68.zip
hdf5-1b2b0bd5a30cbc4227457abd08f563a8fd8c8b68.tar.gz
hdf5-1b2b0bd5a30cbc4227457abd08f563a8fd8c8b68.tar.bz2
[svn-r27540] Replace svn:externals with hard copy of files
Diffstat (limited to 'config/cmake_ext_mod/grepTest.cmake')
-rw-r--r--config/cmake_ext_mod/grepTest.cmake64
1 files changed, 64 insertions, 0 deletions
diff --git a/config/cmake_ext_mod/grepTest.cmake b/config/cmake_ext_mod/grepTest.cmake
new file mode 100644
index 0000000..579d855
--- /dev/null
+++ b/config/cmake_ext_mod/grepTest.cmake
@@ -0,0 +1,64 @@
+# grepTest.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_FOLDER)
+ message ( FATAL_ERROR "Require TEST_FOLDER to be defined")
+endif (NOT TEST_FOLDER)
+if (NOT TEST_OUTPUT)
+ message (FATAL_ERROR "Require TEST_OUTPUT to be defined")
+endif (NOT TEST_OUTPUT)
+#if (NOT TEST_EXPECT)
+# message (STATUS "Require TEST_EXPECT to be defined")
+#endif (NOT TEST_EXPECT)
+if (NOT TEST_FILTER)
+ message (STATUS "Require TEST_FILTER to be defined")
+endif (NOT TEST_FILTER)
+if (NOT TEST_REFERENCE)
+ message (FATAL_ERROR "Require TEST_REFERENCE to be defined")
+endif (NOT TEST_REFERENCE)
+
+message (STATUS "COMMAND: ${TEST_PROGRAM} ${TEST_ARGS}")
+
+# run the test program, capture the stdout/stderr and the result var
+EXECUTE_PROCESS (
+ COMMAND ${TEST_PROGRAM} ${TEST_ARGS}
+ WORKING_DIRECTORY ${TEST_FOLDER}
+ RESULT_VARIABLE TEST_RESULT
+ OUTPUT_FILE ${TEST_OUTPUT}
+ ERROR_FILE ${TEST_OUTPUT}.err
+ OUTPUT_VARIABLE TEST_ERROR
+ ERROR_VARIABLE TEST_ERROR
+)
+
+message (STATUS "COMMAND Result: ${TEST_RESULT}")
+message (STATUS "COMMAND Error: ${TEST_ERROR}")
+
+# now grep the output with the reference
+file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+
+# TEST_REFERENCE should always be matched
+STRING(REGEX MATCH "${TEST_REFERENCE}" TEST_MATCH ${TEST_STREAM})
+STRING(COMPARE EQUAL "${TEST_REFERENCE}" "${TEST_MATCH}" TEST_RESULT)
+if (${TEST_RESULT} STREQUAL "0")
+ message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not contain ${TEST_REFERENCE}")
+endif (${TEST_RESULT} STREQUAL "0")
+
+STRING(REGEX MATCH "${TEST_FILTER}" TEST_MATCH ${TEST_STREAM})
+if (${TEST_EXPECT} STREQUAL "1")
+ # TEST_EXPECT (1) interperts TEST_FILTER as NOT to match
+ STRING(LENGTH "${TEST_MATCH}" TEST_RESULT)
+ if (NOT ${TEST_RESULT} STREQUAL "0")
+ message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did contain ${TEST_FILTER}")
+ endif (NOT ${TEST_RESULT} STREQUAL "0")
+endif (${TEST_EXPECT} STREQUAL "1")
+
+# everything went fine...
+message ("Passed: The output of ${TEST_PROGRAM} matched")
+