Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix gforge-sync.
[simgrid.git] / tools / cmake / UnitTesting.cmake
1 # This file is in charge of the unit testing in SimGrid.
2 # See http://simgrid.gforge.inria.fr/simgrid/3.13/doc/inside_tests.html#inside_tests_add_units
3
4 # To register a file containing unit tests, simply add it to
5 # FILES_CONTAINING_UNITTESTS and have a pleasant day.
6
7 set(FILES_CONTAINING_UNITTESTS
8   src/xbt/cunit.cpp
9   src/xbt/dynar.cpp
10   src/xbt/dict.cpp
11   src/xbt/xbt_str.cpp
12   src/xbt/config.cpp
13 )
14
15 if(SIMGRID_HAVE_MC)
16   set(FILES_CONTAINING_UNITTESTS ${FILES_CONTAINING_UNITTESTS}
17       src/mc/PageStore.cpp
18       src/mc/mc_snapshot.cpp
19   )
20 endif()
21
22 ####  Nothing to change below this line to add a new tested file
23 ################################################################
24
25 foreach(file ${FILES_CONTAINING_UNITTESTS})
26   get_filename_component(basename ${file} NAME_WE)
27   get_filename_component(ext ${file} EXT)
28   set(EXTRACTED_TEST_SOURCE_FILES ${EXTRACTED_TEST_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/src/${basename}_unit${ext})
29 endforeach()
30
31 set(EXTRACTED_TEST_SOURCE_FILES ${EXTRACTED_TEST_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c)
32
33 set_source_files_properties(${EXTRACTED_TEST_SOURCE_FILES} PROPERTIES GENERATED true)
34
35 ADD_CUSTOM_COMMAND(
36   OUTPUT  ${EXTRACTED_TEST_SOURCE_FILES}
37   DEPENDS ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl ${FILES_CONTAINING_UNITTESTS}
38   COMMENT "Generating *_units files for testall..."
39
40   WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
41   COMMAND           ${CMAKE_COMMAND} -E remove -f ${EXTRACTED_TEST_SOURCE_FILES}
42   COMMAND           chmod +x ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
43   COMMAND           ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl --root=src/ --outdir=${CMAKE_CURRENT_BINARY_DIR}/src/ ${FILES_CONTAINING_UNITTESTS}
44 )
45
46 add_executable       (testall ${EXTRACTED_TEST_SOURCE_FILES})
47 target_link_libraries(testall simgrid)
48 set_property(
49     TARGET testall
50     APPEND PROPERTY
51            INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}"
52            )
53