Computer Assited Medical Intervention Tool Kit  version 3.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CamiTKAddTest.h
Go to the documentation of this file.
1 #
48  parse_arguments(CAMITK_ADD_TEST
49  "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
50  "" # possible options
51  ${ARGN}
52  )
53 
54  math(EXPR CAMITK_TEST_ID "${CAMITK_TEST_ID} + 1")
55  set(CAMITK_TEST_NAME "${CAMITK_TEST_BASENAME}${CAMITK_ADD_TEST_TEST_SUFFIX}${CAMITK_TEST_ID}")
56  set(CAMITK_TEST_LIST ${CAMITK_TEST_LIST} ${CAMITK_TEST_NAME})
57 # message(STATUS "Configuring test ${CAMITK_TEST_NAME}")
58 
59  # determine cmake macro path
60  if (NOT EXISTS SDK_TOP_LEVEL_SOURCE_DIR)
61  # this macro is called outside the sdk
62  set(CAMITK_CMAKE_MACRO_PATH ${CAMITK_CMAKE_DIR}/modules/macros)
63  if(NOT IS_DIRECTORY ${CAMITK_CMAKE_MACRO_PATH})
64  # inside opensource but not in sdk (modeling or imaging)
65  set(CAMITK_CMAKE_MACRO_PATH ${CMAKE_SOURCE_DIR}/sdk/cmake/modules/macros)
66  endif()
67  else()
68  # directly use the macro source dir
69  set(CAMITK_CMAKE_MACRO_PATH ${SDK_TOP_LEVEL_SOURCE_DIR}/cmake/modules/macros)
70  endif()
71 
72  # create test output directory
73  set(CAMITK_TEST_OUTPUT_DIR "${CMAKE_BINARY_DIR}/Testing/Temporary/${CAMITK_TEST_NAME}")
74 # message(STATUS "Creating test output dir ${CAMITK_TEST_OUTPUT_DIR}")
75  execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_TEST_OUTPUT_DIR})
76 
77  # check which test is to be done
78  if(CAMITK_ADD_TEST_PASS_FILE)
79  add_test(NAME ${CAMITK_TEST_NAME}
80  COMMAND ${CMAKE_COMMAND}
81  -DCAMITK_TEST_COMMAND=${CAMITK_INIT_TEST_EXECUTABLE}
82  -DCAMITK_TEST_COMMAND_ARG=${CAMITK_ADD_TEST_EXECUTABLE_ARGS}
83  -DCAMITK_TEST_PASS_FILE=${CAMITK_ADD_TEST_PASS_FILE}
84  -DCAMITK_TEST_OUTPUT_DIR=${CAMITK_TEST_OUTPUT_DIR}
85  -DCAMITK_TEST_NAME=${CAMITK_TEST_NAME}
86  -P ${CAMITK_CMAKE_MACRO_PATH}/CamiTKTestPassFile.cmake
87  )
88  elseif(CAMITK_ADD_TEST_PASS_FILE_OUTPUT)
89  add_test(NAME ${CAMITK_TEST_NAME}
90  COMMAND ${CMAKE_COMMAND}
91  -DCAMITK_TEST_COMMAND=${CAMITK_INIT_TEST_EXECUTABLE}
92  -DCAMITK_TEST_COMMAND_ARG=${CAMITK_ADD_TEST_EXECUTABLE_ARGS}
93  -DCAMITK_TEST_PASS_FILE=${CAMITK_ADD_TEST_PASS_FILE_OUTPUT}
94  -DCAMITK_TEST_OUTPUT_DIR=${CAMITK_TEST_OUTPUT_DIR}
95  -DCAMITK_TEST_NAME=${CAMITK_TEST_NAME}
96  -P ${CAMITK_CMAKE_MACRO_PATH}/CamiTKTestCompareFile.cmake
97  )
98  else()
99  # set output files for more advanced checking/debugging
100  set(CAMITK_TEST_COMMAND_FILE ${CAMITK_TEST_OUTPUT_DIR}/command) # which command is run to test the exectable
101  # cleanup
102  execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CAMITK_TEST_COMMAND_FILE} )
103  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")
104 
105  if(CAMITK_ADD_TEST_EXECUTABLE_ARGS)
106  # expands all arguments
107  string(REPLACE " " "" CAMITK_TEST_COMMAND_ARG_LIST ${CAMITK_ADD_TEST_EXECUTABLE_ARGS})
108  else()
109  set(CAMITK_TEST_COMMAND_ARG_LIST)
110  endif()
111 
112  # add the simple test command
113  add_test(NAME ${CAMITK_TEST_NAME}
114  COMMAND ${CAMITK_INIT_TEST_EXECUTABLE} ${CAMITK_TEST_COMMAND_ARG_LIST}
115  )
116 
117  # add properties if needed
118  if(CAMITK_ADD_TEST_PASS_REGULAR_EXPRESSION)
119  set_tests_properties(${CAMITK_TEST_NAME} PROPERTIES PASS_REGULAR_EXPRESSION ${CAMITK_ADD_TEST_PASS_REGULAR_EXPRESSION})
120  else()
121  if(CAMITK_ADD_TEST_FAIL_REGULAR_EXPRESSION)
122  set_tests_properties(${CAMITK_TEST_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION ${CAMITK_ADD_TEST_FAIL_REGULAR_EXPRESSION})
123  endif()
124  endif()
125  endif()
126 
127  # set the label for tests
128  if( CAMITK_ADD_TEST_PROJECT_NAME )
129  set_tests_properties( ${CAMITK_TEST_NAME} PROPERTIES LABELS ${CAMITK_ADD_TEST_PROJECT_NAME} )#associate tests to a project name in CDash
130  else()
131  set_tests_properties( ${CAMITK_TEST_NAME} PROPERTIES LABELS ${CAMITK_TEST_BASENAME} )
132  endif()
133 
134 end(){)
OUTFILE execute_process(COMMAND ${CMAKE_COMMAND}-E remove-f ${CAMITK_TEST_COMMAND_OUTPUT_FILE}) set(CAMITK_TEST_COMMAND_ARG"$
Definition: CamiTKTestCompareFile.h:15
string name
Definition: select.cpp:111
STL namespace.
string output
Definition: pml2csv.cpp:111
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
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:47