Computer Assited Medical Intervention Tool Kit  version 4.0
CamiTKAddTest.h
Go to the documentation of this file.
1 #
52  parse_arguments(CAMITK_ADD_TEST
53  "EXECUTABLE_ARGSPASS_FILEPASS_REGULAR_EXPRESSIONFAIL_REGULAR_EXPRESSIONPASS_FILE_OUTPUTTEST_SUFFIXPROJECT_NAME" # possible lists #PASS_FILE -> compare the std output to a ref file # PASS_FILE_OUTPUT -> compare two files given as parameters
54  "" # possible options
55  ${ARGN}
56  )
57 
58  math(EXPR CAMITK_TEST_ID "${CAMITK_TEST_ID} + 1")
59  set(CAMITK_TEST_NAME "${CAMITK_ADD_TEST_PROJECT_NAME}${CAMITK_ADD_TEST_TEST_SUFFIX}${CAMITK_TEST_ID}")
60  set(CAMITK_TEST_LIST ${CAMITK_TEST_LIST} ${CAMITK_TEST_NAME})
61  # message(STATUS "Configuring test ${CAMITK_TEST_NAME}")
62 
63 
64  # determine cmake macro path
65  if (NOT EXISTS SDK_TOP_LEVEL_SOURCE_DIR)
66  # this macro is called outside the sdk
67  set(CAMITK_CMAKE_MACRO_PATH ${CAMITK_CMAKE_DIR}/modules/macros/camitk/test)
68  if(NOT IS_DIRECTORY ${CAMITK_CMAKE_MACRO_PATH})
69  # inside opensource but not in sdk (modeling or imaging)
70  set(CAMITK_CMAKE_MACRO_PATH ${CMAKE_SOURCE_DIR}/sdk/cmake/modules/macros/camitk/test)
71  endif()
72  else()
73  # directly use the macro source dir
74  set(CAMITK_CMAKE_MACRO_PATH ${SDK_TOP_LEVEL_SOURCE_DIR}/cmake/modules/macros/camitk/test)
75  endif()
76 
77  # create test output directory
78  set(CAMITK_TEST_OUTPUT_DIR "${CMAKE_BINARY_DIR}/Testing/Temporary/${CAMITK_TEST_NAME}")
79 # message(STATUS "Creating test output dir ${CAMITK_TEST_OUTPUT_DIR}")
80  execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_TEST_OUTPUT_DIR})
81 
82  # check which test is to be done
83  if(CAMITK_ADD_TEST_PASS_FILE)
84  add_test(NAME ${CAMITK_TEST_NAME}
85  COMMAND ${CMAKE_COMMAND}
86  -DCAMITK_TEST_COMMAND=${CAMITK_INIT_TEST_EXECUTABLE}
87  -DCAMITK_TEST_COMMAND_ARG=${CAMITK_ADD_TEST_EXECUTABLE_ARGS}
88  -DCAMITK_TEST_PASS_FILE=${CAMITK_ADD_TEST_PASS_FILE}
89  -DCAMITK_TEST_OUTPUT_DIR=${CAMITK_TEST_OUTPUT_DIR}
90  -DCAMITK_TEST_NAME=${CAMITK_TEST_NAME}
91  -P ${CAMITK_CMAKE_MACRO_PATH}/CamiTKTestPassFile.cmake
92  )
93  elseif(CAMITK_ADD_TEST_PASS_FILE_OUTPUT)
94  add_test(NAME ${CAMITK_TEST_NAME}
95  COMMAND ${CMAKE_COMMAND}
96  -DCAMITK_TEST_COMMAND=${CAMITK_INIT_TEST_EXECUTABLE}
97  -DCAMITK_TEST_COMMAND_ARG=${CAMITK_ADD_TEST_EXECUTABLE_ARGS}
98  -DCAMITK_TEST_PASS_FILE=${CAMITK_ADD_TEST_PASS_FILE_OUTPUT}
99  -DCAMITK_TEST_OUTPUT_DIR=${CAMITK_TEST_OUTPUT_DIR}
100  -DCAMITK_TEST_NAME=${CAMITK_TEST_NAME}
101  -P ${CAMITK_CMAKE_MACRO_PATH}/CamiTKTestCompareFile.cmake
102  )
103  else()
104  # set output files for more advanced checking/debugging
105  set(CAMITK_TEST_COMMAND_FILE ${CAMITK_TEST_OUTPUT_DIR}/command) # which command is run to test the exectable
106  # cleanup
107  execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CAMITK_TEST_COMMAND_FILE} )
108  file(WRITE ${CAMITK_TEST_COMMAND_FILE} "Test command: ${CAMITK_INIT_TEST_EXECUTABLE} ${CAMITK_ADD_TEST_EXECUTABLE_ARGS}\nPASS_REGULAR_EXPRESSION: '${CAMITK_ADD_TEST_PASS_REGULAR_EXPRESSION}'\n")
109 
110  if(CAMITK_ADD_TEST_EXECUTABLE_ARGS)
111  # expands all arguments
112  string(REPLACE " " "" CAMITK_TEST_COMMAND_ARG_LIST ${CAMITK_ADD_TEST_EXECUTABLE_ARGS})
113  else()
114  set(CAMITK_TEST_COMMAND_ARG_LIST)
115  endif()
116 
117  # add the simple test command
118  add_test(NAME ${CAMITK_TEST_NAME}
119  COMMAND ${CAMITK_INIT_TEST_EXECUTABLE} ${CAMITK_TEST_COMMAND_ARG_LIST}
120  )
121 
122  # add properties if needed
123  if(CAMITK_ADD_TEST_PASS_REGULAR_EXPRESSION)
124  set_tests_properties(${CAMITK_TEST_NAME} PROPERTIES PASS_REGULAR_EXPRESSION ${CAMITK_ADD_TEST_PASS_REGULAR_EXPRESSION})
125  else()
126  if(CAMITK_ADD_TEST_FAIL_REGULAR_EXPRESSION)
127  set_tests_properties(${CAMITK_TEST_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION ${CAMITK_ADD_TEST_FAIL_REGULAR_EXPRESSION})
128  endif()
129  endif()
130  endif()
131 
132  # set the label for tests
133  if( CAMITK_ADD_TEST_PROJECT_NAME )
134  set_tests_properties( ${CAMITK_TEST_NAME} PROPERTIES LABELS ${CAMITK_ADD_TEST_PROJECT_NAME} )#associate tests to a project name in CDash
135  else()
136  set_tests_properties( ${CAMITK_TEST_NAME} PROPERTIES LABELS ${CAMITK_TEST_BASENAME} )
137  endif()
138 
139 end(){)
STL namespace.
camitk_add_test()
camitk_add_test is a macro to add a new test to the CTest infrastructure It encapsulates CMake add_te...
Definition: CamiTKAddTest.h:51
Definition: Action.cpp:40
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
set(CAMITK_TEST_COMMAND_FILE ${CAMITK_TEST_OUTPUT_DIR}/command) set(CAMITK_TEST_COMMAND_RESULT_FILE $
This CMake file run a command and put the output in a given file.
Definition: CamiTKTestPassFile.h:11
test result execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CAMITK_TEST_COMMAND_FILE} ${CAMITK_TEST_COMMAND_RESULT_FILE} ${CAMITK_TEST_COMMAND_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_COMMAND_FILE} ${CAMITK_TEST_PASS_FILE_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_RESULT_FILE}) file(WRITE $
Definition: CamiTKTestPassFile.h:19