aboutsummaryrefslogtreecommitdiff
path: root/tests/functions.cmake
blob: e902fa626deae275cb1a4132c21af60a93c3414c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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()