Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rename sg_config.h -> sg_config.hpp.
[simgrid.git] / tools / sg_unit_extractor.pl
index 6502ccf..8b2083f 100755 (executable)
@@ -1,13 +1,10 @@
 #! /usr/bin/env perl
 
-# Copyright (c) 2005-2012, 2014. The SimGrid Team.
-# All rights reserved.
+# Copyright (c) 2005-2012, 2014-2017. The SimGrid Team. All rights reserved.
 
 # This program is free software; you can redistribute it and/or modify it
 # under the terms of the license (GNU LGPL) which comes with this package.
 
-use strict;
-
 use strict;
 use Getopt::Long qw(GetOptions);
 
@@ -16,11 +13,12 @@ my $progname="sg_unit_extractor";
 
 sub usage($) {
     my $ret;
-    print "USAGE: $progname [--root=part/to/cut] [--path=where/to/search NOT WORKING] [--outdir=where/to/generate/files] infile [infile+]\n";
+    print "USAGE: $progname [--root=part/to/cut] [--outdir=where/to/generate/files] infile [infile+]\n\n";
+    print "This program is in charge of extracting the unit tests out of the SimGrid source code.\n";
+    print "See http://simgrid.gforge.inria.fr/doc/latest/inside_tests.html for more details.\n";
     exit $ret;
 }
 
-my $path=undef;
 my $outdir=undef;
 my $root;
 my $help;
@@ -29,7 +27,6 @@ Getopt::Long::config('permute','no_getopt_compat', 'no_auto_abbrev');
 GetOptions(
         'help|h'                => sub {usage(0)},
         'root=s' =>\$root,
-        'path=s' =>\$path,
         'outdir=s' =>\$outdir) or usage(1);
 
 usage(1) if (scalar @ARGV == 0);
@@ -129,6 +126,7 @@ sub process_one($) {
        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 "#define STRLEN 1024\n";
        print OUT "/* SGU: BEGIN PROTOTYPES */\n";
        print OUT "/* SGU: END PROTOTYPES */\n\n";
        print OUT $GENERATED;
@@ -136,7 +134,7 @@ sub process_one($) {
        print OUT <<EOF;
 int main(int argc, char *argv[]) {
   xbt_test_suite_t suite; 
-  char selection[1024];
+  char selection[STRLEN];
   int verbosity = 0;
   int i;
   int res;
@@ -151,12 +149,9 @@ int main(int argc, char *argv[]) {
     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);
-        }
+        if (selection[0] != '\\0')
+          strncat(selection, \",\", STRLEN - 1 - strlen(selection));
+        strncat(selection, p, STRLEN - 1 - strlen(selection));
       } else if (!strcmp(argv[i], \"--verbose\")) {
         verbosity++;
       } else if (!strcmp(argv[i], \"--dump-only\")||