-# To add a new tested file, simply add the original file in
-# TEST_CFILES and generated file in TEST_UNITS. The rest is automatic.
-
-set(TEST_CFILES
- src/xbt/cunit.c
- src/xbt/ex.c
- src/xbt/dynar.c
- src/xbt/dict.c
- src/xbt/swag.c
- src/xbt/xbt_str.c
- src/xbt/xbt_strbuff.c
- src/xbt/xbt_sha.c
- src/xbt/config.c
- )
-set(TEST_UNITS
- ${CMAKE_CURRENT_BINARY_DIR}/src/cunit_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/ex_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/dynar_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/dict_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/swag_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_str_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_strbuff_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/xbt_sha_unit.c
- ${CMAKE_CURRENT_BINARY_DIR}/src/config_unit.c
-
- ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c
- )
-
-if(HAVE_MC)
- set(TEST_CFILES ${TEST_CFILES}
+# This file is in charge of the unit testing in SimGrid.
+# See http://simgrid.gforge.inria.fr/simgrid/3.13/doc/inside_tests.html#inside_tests_add_units
+
+# To register a file containing unit tests, simply add it to
+# FILES_CONTAINING_UNITTESTS and have a pleasant day.
+
+set(FILES_CONTAINING_UNITTESTS
+ src/xbt/cunit.cpp
+ src/xbt/ex.cpp
+ src/xbt/dynar.cpp
+ src/xbt/dict.cpp
+ src/xbt/xbt_str.cpp
+ src/xbt/config.cpp
+)
+
+if(SIMGRID_HAVE_MC)
+ set(FILES_CONTAINING_UNITTESTS ${FILES_CONTAINING_UNITTESTS}
src/mc/PageStore.cpp
src/mc/mc_snapshot.cpp
- )
- set(TEST_UNITS ${TEST_UNITS}
- ${CMAKE_CURRENT_BINARY_DIR}/src/PageStore_unit.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/src/mc_snapshot_unit.cpp
- )
+ )
endif()
-ADD_CUSTOM_COMMAND(
- OUTPUT ${TEST_UNITS}
-
- DEPENDS ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
- ${TEST_CFILES}
-
- COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_UNITS}
+#### Nothing to change below this line to add a new tested file
+################################################################
- COMMAND chmod +x ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
+foreach(file ${FILES_CONTAINING_UNITTESTS})
+ get_filename_component(basename ${file} NAME_WE)
+ get_filename_component(ext ${file} EXT)
+ set(EXTRACTED_TEST_SOURCE_FILES ${EXTRACTED_TEST_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/src/${basename}_unit${ext})
+endforeach()
+
+set(EXTRACTED_TEST_SOURCE_FILES ${EXTRACTED_TEST_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c)
- COMMAND ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl --root=src/ --outdir=${CMAKE_CURRENT_BINARY_DIR}/src/ ${TEST_CFILES}
-
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
+set_source_files_properties(${EXTRACTED_TEST_SOURCE_FILES} PROPERTIES GENERATED true)
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${EXTRACTED_TEST_SOURCE_FILES}
+ DEPENDS ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl ${FILES_CONTAINING_UNITTESTS}
COMMENT "Generating *_units files for testall..."
- )
-
-### Ensure the build of testall
-set_source_files_properties(${TEST_UNITS} PROPERTIES GENERATED true)
+ WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${EXTRACTED_TEST_SOURCE_FILES}
+ COMMAND chmod +x ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
+ COMMAND ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl --root=src/ --outdir=${CMAKE_CURRENT_BINARY_DIR}/src/ ${FILES_CONTAINING_UNITTESTS}
+)
-add_executable (testall ${TEST_UNITS})
+add_executable (testall ${EXTRACTED_TEST_SOURCE_FILES})
target_link_libraries(testall simgrid)