aboutsummaryrefslogtreecommitdiff
path: root/tests/functions.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functions.cmake')
-rwxr-xr-xtests/functions.cmake78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/functions.cmake b/tests/functions.cmake
new file mode 100755
index 0000000..e902fa6
--- /dev/null
+++ b/tests/functions.cmake
@@ -0,0 +1,78 @@
+macro (M_SET_CONFIG_OPTIONS)
+ if (${SerialPortSpeed})
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -s ${SerialPortSpeed}")
+ endif ()
+ if (${DefaultSerialPortName})
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -p ${DefaultSerialPortName}")
+ endif ()
+ if (NOT "${McuCpuFrequency}" STREQUAL "")
+ set (CONFIG_OPTIONS "${CONFIG_OPTIONS} -f ${McuCpuFrequency}")
+ endif ()
+endmacro ()
+
+macro (M_ADD_TEST SCRIPT)
+ add_test(NAME ${TestNamespace}${NAME}
+ CONFIGURATIONS ${TestConfigurations}
+ COMMAND ${CMAKE_COMMAND}
+ -DTestFunctions=${CMAKE_SOURCE_DIR}/tests/functions.cmake
+ -DTestArgs=${ARGS}
+ -DTestConfigOptions=${CONFIG_OPTIONS}
+ -DTestExitCode=${EXITCODE}
+ -DTestBlessedFile=${BLESSEDFILE}
+ -DTestFile=${FILE}
+ -P ${SCRIPT}
+ )
+endmacro ()
+
+
+function (ADD_WITHOUT_CONFIG_TEST NAME ARGS EXITCODE)
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/other_operations.cmake)
+endfunction ()
+
+function (ADD_NORMAL_TEST NAME ARGS EXITCODE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/other_operations.cmake)
+endfunction ()
+
+function (ADD_ERASE_TEST NAME ARGS EXITCODE BLESSEDFILE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/erase.cmake)
+endfunction ()
+
+function (ADD_WRITE_TEST NAME ARGS EXITCODE BLESSEDFILE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/write.cmake)
+endfunction ()
+
+function (ADD_READ_TEST NAME ARGS EXITCODE FILE)
+ m_set_config_options ()
+ m_add_test (${CMAKE_SOURCE_DIR}/tests/read.cmake)
+endfunction ()
+
+
+# -------------------------------------------------------
+
+
+function (EXEC_TEST ARGS EXITCODE)
+ string (REPLACE " " ";" ARGS_LIST "${ARGS}")
+ execute_process (
+ COMMAND ${CMAKE_BINARY_DIR}/main ${ARGS_LIST}
+ RESULT_VARIABLE MAIN_RESULT
+ TIMEOUT 120
+ )
+ if (NOT ${MAIN_RESULT} EQUAL ${EXITCODE})
+ message(FATAL_ERROR "Unexpected exit code ${MAIN_RESULT}, expected ${EXITCODE}")
+ endif()
+ set (RETVAL ${MAIN_RESULT} PARENT_SCOPE)
+endfunction ()
+
+
+function(COMPARE_FILES F1 F2)
+ execute_process (
+ COMMAND ${CMAKE_COMMAND} -E compare_files ${F1} ${F2}
+ RESULT_VARIABLE CMP_RESULT
+ )
+ if(CMP_RESULT)
+ message(FATAL_ERROR "Files do not match: ${F1} ${F2}")
+ endif()
+endfunction()