+ # Write the test
+
+ my ($GENERATED)=("/*******************************/\n".
+ "/* GENERATED FILE, DO NOT EDIT */\n".
+ "/*******************************/\n\n");
+ $beginline+=2;
+ open OUT,">$outfile" || die "$progname: Cannot open output file '$outfile': $!\n";
+ print OUT $GENERATED;
+ print OUT "#include <stdio.h>\n";
+ print OUT "#include \"xbt.h\"\n";
+ print OUT $GENERATED;
+ print OUT "#line $beginline \"$infile\" \n";
+ print OUT "$unit_source";
+ print OUT $GENERATED;
+ close OUT || die "$progname: Cannot close output file '$outfile': $!\n";
+
+ # write the main skeleton if needed
+ if (! -e "${outdir}simgrid_units_main.c") {
+ open OUT,">${outdir}simgrid_units_main.c" || die "$progname: Cannot open main file '${outdir}simgrid_units_main.c': $!\n";
+ print OUT $GENERATED;
+ print OUT "#include <stdio.h>\n\n";
+ print OUT "#include \"xbt.h\"\n\n";
+ print OUT "extern xbt_test_unit_t _xbt_current_unit;\n\n";
+ print OUT "/* SGU: BEGIN PROTOTYPES */\n";
+ print OUT "/* SGU: END PROTOTYPES */\n\n";
+ print OUT $GENERATED;
+ # print OUT "# 93 \"sg_unit_extractor.pl\"\n";
+ print OUT <<EOF;
+int main(int argc, char *argv[]) {
+ xbt_test_suite_t suite;
+ char selection[1024];
+ int verbosity = 0;
+ int i;
+ int res;
+
+ /* SGU: BEGIN SUITES DECLARATION */
+ /* SGU: END SUITES DECLARATION */
+
+ xbt_init(&argc,argv);
+
+ /* Search for the tests to do */
+ selection[0]='\\0';
+ for (i=1;i<argc;i++) {
+ if (!strncmp(argv[i],\"--tests=\",strlen(\"--tests=\"))) {
+ char *p=strchr(argv[i],'=')+1;
+ if (selection[0] == '\\0') {
+ strcpy(selection, p);
+ } else {
+ strcat(selection, \",\");
+ strcat(selection, p);
+ }
+ } else if (!strcmp(argv[i], \"--verbose\")) {
+ verbosity++;
+ } else if (!strcmp(argv[i], \"--dump-only\")||
+ !strcmp(argv[i], \"--dump\")) {
+ xbt_test_dump(selection);
+ return 0;
+ } else if (!strcmp(argv[i], \"--help\")) {
+ printf(
+ "Usage: testall [--help] [--tests=selection] [--dump-only]\\n\\n"
+ "--help: display this help\\n"
+ "--verbose: print the name for each running test\\n"
+ "--dump-only: don't run the tests, but display some debuging info about the tests\\n"
+ "--tests=selection: Use argument to select which suites/units/tests to run\\n"
+ " --tests can be used more than once, and selection may be a comma\\n"
+ " separated list of directives.\\n\\n"
+ "Directives are of the form:\\n"
+ " [-]suitename[:unitname]\\n\\n"
+ "If the first char is a '-', the directive disables its argument instead of enabling it\\n"
+ "suitename/unitname is the set of tests to en/disable. If a unitname is not specified,\\n"
+ "it applies on any unit.\\n\\n"
+ "By default, everything is enabled.\\n\\n"
+ "'all' as suite name apply to all suites.\\n\\n"
+ "Example 1: \\"-toto,+toto:tutu\\"\\n"
+ " disables the whole toto testsuite (any unit in it),\\n"
+ " then reenables the tutu unit of the toto test suite.\\n\\n"
+ "Example 2: \\"-all,+toto\\"\\n"
+ " Run nothing but the toto suite.\\n");
+ return 0;
+ } else {
+ printf("testall: Unknown option: %s\\n",argv[i]);
+ return 1;
+ }