Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Convert the unit tests of xbt::config to Catch2.
[simgrid.git] / tools / cmake / UnitTesting.cmake
index c7dc531..93a7d77 100644 (file)
@@ -1,61 +1,43 @@
-# 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/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/config_unit.c
-
-  ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c
-  )
-
-if(HAVE_MC)
-  set(TEST_CFILES ${TEST_CFILES}
-      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()
+# 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
 
-ADD_CUSTOM_COMMAND(
-  OUTPUT       ${TEST_UNITS}
+# To register a file containing unit tests, simply add it to
+# FILES_CONTAINING_UNITTESTS and have a pleasant day.
 
-  DEPENDS      ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl
-  ${TEST_CFILES}
+set(FILES_CONTAINING_UNITTESTS
+  src/xbt/cunit.cpp
+)
 
-  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()
 
-  COMMAND ${CMAKE_HOME_DIRECTORY}/tools/sg_unit_extractor.pl --root=src/ --outdir=${CMAKE_CURRENT_BINARY_DIR}/src/ ${TEST_CFILES}
+set(EXTRACTED_TEST_SOURCE_FILES ${EXTRACTED_TEST_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_units_main.c)
 
-  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 EXCLUDE_FROM_ALL ${EXTRACTED_TEST_SOURCE_FILES})
+add_dependencies(tests testall)
 target_link_libraries(testall simgrid)
+set_property(
+    TARGET testall
+    APPEND PROPERTY
+           INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}"
+          )