From: mquinson Date: Sun, 28 Nov 2010 10:45:08 +0000 (+0000) Subject: change the way unit testing is handled by cmake. Put it all in one file only instead... X-Git-Tag: v3_5~125 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7e9997bc1271973ad0a157f168213a2f874fd02f?ds=sidebyside change the way unit testing is handled by cmake. Put it all in one file only instead of spreading it in 3 or 4 files git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8706 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/buildtools/Cmake/MakeExeLib.cmake b/buildtools/Cmake/MakeExeLib.cmake index 38c5134c58..90ced4c2f0 100644 --- a/buildtools/Cmake/MakeExeLib.cmake +++ b/buildtools/Cmake/MakeExeLib.cmake @@ -125,9 +125,6 @@ endif(enable_lib_static) ### Make EXEs -#src/testall -add_subdirectory(${PROJECT_DIRECTORY}/src) - #tools/gras add_subdirectory(${PROJECT_DIRECTORY}/tools/gras) diff --git a/buildtools/Cmake/UnitTesting.cmake b/buildtools/Cmake/UnitTesting.cmake index e2dc8b6e96..49ff43f679 100644 --- a/buildtools/Cmake/UnitTesting.cmake +++ b/buildtools/Cmake/UnitTesting.cmake @@ -1,106 +1,85 @@ +# 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/set.c + src/xbt/swag.c + src/xbt/xbt_str.c + src/xbt/xbt_strbuff.c + src/xbt/xbt_sha.c + src/xbt/config.c + src/xbt/xbt_synchro.c +) +set(TEST_UNITS + ${PROJECT_DIRECTORY}/src/cunit_unit.c + ${PROJECT_DIRECTORY}/src/ex_unit.c + ${PROJECT_DIRECTORY}/src/dynar_unit.c + ${PROJECT_DIRECTORY}/src/dict_unit.c + ${PROJECT_DIRECTORY}/src/set_unit.c + ${PROJECT_DIRECTORY}/src/swag_unit.c + ${PROJECT_DIRECTORY}/src/xbt_str_unit.c + ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c + ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c + ${PROJECT_DIRECTORY}/src/config_unit.c + ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c + + ${PROJECT_DIRECTORY}/src/simgrid_units_main.c +) + + + if(PERL_EXECUTABLE) ADD_CUSTOM_COMMAND( - OUTPUT ${PROJECT_DIRECTORY}/src/cunit_unit.c - ${PROJECT_DIRECTORY}/src/ex_unit.c - ${PROJECT_DIRECTORY}/src/dynar_unit.c - ${PROJECT_DIRECTORY}/src/dict_unit.c - ${PROJECT_DIRECTORY}/src/set_unit.c - ${PROJECT_DIRECTORY}/src/swag_unit.c - ${PROJECT_DIRECTORY}/src/xbt_str_unit.c - ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c - ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c - ${PROJECT_DIRECTORY}/src/config_unit.c - ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c + OUTPUT ${TEST_UNITS} - DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl - ${PROJECT_DIRECTORY}/src/xbt/cunit.c - ${PROJECT_DIRECTORY}/src/xbt/ex.c - ${PROJECT_DIRECTORY}/src/xbt/dynar.c - ${PROJECT_DIRECTORY}/src/xbt/dict.c - ${PROJECT_DIRECTORY}/src/xbt/set.c - ${PROJECT_DIRECTORY}/src/xbt/swag.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c - ${PROJECT_DIRECTORY}/src/xbt/config.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c + DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl + ${TEST_CFILES} - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/simgrid_units_main.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/cunit_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/ex_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dynar_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/dict_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/set_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/swag_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_str_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/config_unit.c - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c - - COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl + COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_UNITS} - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/cunit.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/ex.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dynar.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/dict.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/set.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/swag.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_str.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_strbuff.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_sha.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/config.c - COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl xbt/xbt_synchro.c + COMMAND chmod a=rwx ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl + COMMAND ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl ${TEST_CFILES} - WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src + WORKING_DIRECTORY ${PROJECT_DIRECTORY}/src - COMMENT "Generating *_units files for testall..." + COMMENT "Generating *_units files for testall..." ) - add_custom_target(units_files - DEPENDS ${PROJECT_DIRECTORY}/src/cunit_unit.c - ${PROJECT_DIRECTORY}/src/ex_unit.c - ${PROJECT_DIRECTORY}/src/dynar_unit.c - ${PROJECT_DIRECTORY}/src/dict_unit.c - ${PROJECT_DIRECTORY}/src/set_unit.c - ${PROJECT_DIRECTORY}/src/swag_unit.c - ${PROJECT_DIRECTORY}/src/xbt_str_unit.c - ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c - ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c - ${PROJECT_DIRECTORY}/src/config_unit.c - ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c - ) +# add_custom_target(units_files +# DEPENDS ${TEST_UNITS} +# ) else(PERL_EXECUTABLE) ADD_CUSTOM_COMMAND( - OUTPUT ${PROJECT_DIRECTORY}/src/cunit_unit.c - ${PROJECT_DIRECTORY}/src/ex_unit.c - ${PROJECT_DIRECTORY}/src/dynar_unit.c - ${PROJECT_DIRECTORY}/src/dict_unit.c - ${PROJECT_DIRECTORY}/src/set_unit.c - ${PROJECT_DIRECTORY}/src/swag_unit.c - ${PROJECT_DIRECTORY}/src/xbt_str_unit.c - ${PROJECT_DIRECTORY}/src/xbt_strbuff_unit.c - ${PROJECT_DIRECTORY}/src/xbt_sha_unit.c - ${PROJECT_DIRECTORY}/src/config_unit.c - ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c + OUTPUT ${TEST_UNITS} DEPENDS ${PROJECT_DIRECTORY}/tools/sg_unit_extractor.pl - ${PROJECT_DIRECTORY}/src/xbt/cunit.c - ${PROJECT_DIRECTORY}/src/xbt/ex.c - ${PROJECT_DIRECTORY}/src/xbt/dynar.c - ${PROJECT_DIRECTORY}/src/xbt/dict.c - ${PROJECT_DIRECTORY}/src/xbt/set.c - ${PROJECT_DIRECTORY}/src/xbt/swag.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_str.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_strbuff.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_sha.c - ${PROJECT_DIRECTORY}/src/xbt/config.c - ${PROJECT_DIRECTORY}/src/xbt/xbt_synchro.c + ${TEST_CFILES} - COMMAND ${CMAKE_COMMAND} message "Unit files need to be regenerated, but no Perl installed") + COMMAND ${CMAKE_COMMAND} message WARNING "Unit files need to be regenerated, but no Perl installed") endif(PERL_EXECUTABLE) + + +### Ensure the build of testall + +set_source_files_properties(${TEST_UNITS} PROPERTIES GENERATED true) + +set(EXECUTABLE_OUTPUT_PATH "${PROJECT_DIRECTORY}/src/") +add_executable(testall ${TEST_UNITS}) + +### Add definitions for compile +if(NOT WIN32) + target_link_libraries(testall gras m) +else(NOT WIN32) + target_link_libraries(testall gras) +endif(NOT WIN32) + +add_dependencies(testall $(TEST_UNITS)) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 9554134b2f..0000000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 2.6) - -set(EXECUTABLE_OUTPUT_PATH "${PROJECT_DIRECTORY}/src/") - -set(USE_TEST_UNITS -${TEST_UNITS} -${PROJECT_DIRECTORY}/src/simgrid_units_main.c -) - -set_source_files_properties(${USE_TEST_UNITS} -PROPERTIES GENERATED true) - -add_executable(testall ${USE_TEST_UNITS}) - -### Add definitions for compile -if(NOT WIN32) - target_link_libraries(testall gras m) -else(NOT WIN32) - target_link_libraries(testall gras) -endif(NOT WIN32) - -add_dependencies(testall units_files) \ No newline at end of file diff --git a/tools/sg_unit_extractor.pl b/tools/sg_unit_extractor.pl index 4b96fd8502..6baa7b711b 100755 --- a/tools/sg_unit_extractor.pl +++ b/tools/sg_unit_extractor.pl @@ -17,10 +17,13 @@ die "USAGE: $progname infile [infile+]\n" map {process_one($_)} @ARGV; sub process_one($) { - my $infile = shift; my $outfile; + print "$progname: processing $infile...\n"; + + $infile =~ s|src/|| unless (-e $infile); + $outfile = $infile; $outfile =~ s/\.c$/_unit.c/; $outfile =~ s|.*/([^/]*)$|$1| if $outfile =~ m|/|; @@ -32,7 +35,7 @@ sub process_one($) { my (@tests); # actual content open IN, "$infile" || die "$progname: Cannot open input file '$infile': $!\n"; - + my $takeit=0; my $line=0; my $beginline=0;