From: navarrop Date: Fri, 17 Dec 2010 11:55:38 +0000 (+0000) Subject: Add functions to tesh.pl X-Git-Tag: v3.6_beta2~637 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/363ae066badd453c806244ee48a0f18da4643261 Add functions to tesh.pl git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9286 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/buildtools/Cmake/tesh.pl b/buildtools/Cmake/tesh.pl index 8de3293f0b..87e6adc2e0 100755 --- a/buildtools/Cmake/tesh.pl +++ b/buildtools/Cmake/tesh.pl @@ -15,6 +15,11 @@ my(@list1)=(); my(@list2)=(); my(@list3)=(); my(@buffer)=(); +my($timeout)=-1; +my($parallel)=0; +my($verbose)=0; +my($encore)=0; +my($old_buffer); #options do{ @@ -26,11 +31,11 @@ do{ if( -e $directory) { chdir("$directory"); - print "-- Tesh options : Change directory to \"$directory\"\n"; + print "[Tesh/INFO] Change directory to \"$directory\"\n"; } else { - die "Directory not found : \"$directory\"\n"; + die "[Tesh/CRITICAL] Directory not found : \"$directory\"\n"; } $nb_arg++; } @@ -40,13 +45,17 @@ do{ if(!$ARGV[$nb_arg] or $ARGV[$nb_arg] =~ /^--/){die "Usage: tesh.pl --setenv environment_variable\n";} if(!$ARGV[$nb_arg+1] or $ARGV[$nb_arg+1] =~ /^--/){die "Usage: tesh.pl --setenv environment_variable\n";} $ENV{$ARGV[$nb_arg]} = "$ENV{$ARGV[$nb_arg]}:$ARGV[$nb_arg+1]"; - print "-- Tesh options : export $ARGV[$nb_arg]=\"$ENV{$ARGV[$nb_arg]}\"\n"; + print "[Tesh/INFO] export $ARGV[$nb_arg]=\"$ENV{$ARGV[$nb_arg]}\"\n"; $nb_arg++; $nb_arg++; } + elsif($ARGV[$nb_arg] =~ /^--verbose$/) + { + $verbose=1; + } else { - print "-- Tesh options : Unrecognized option : $ARGV[$nb_arg]\n"; + print "[Tesh/CRITICAL] Unrecognized option : $ARGV[$nb_arg]\n"; $nb_arg++; } }while(($nb_arg) < $#ARGV); @@ -56,72 +65,190 @@ $ENV{PATH} = "$ENV{PATH}:."; #tesh file if(!$ARGV[$nb_arg]){die "tesh.pl \n";} -print "-- Tesh load file : $ARGV[$nb_arg]\n"; +print "[Tesh/INFO] load file : $ARGV[$nb_arg]\n"; my($file)=$ARGV[$nb_arg]; -open SH_LIGNE, $file or die "Unable to open $file. $!\n"; +open SH_LIGNE, $file or die "[Tesh/CRITICAL] Unable to open $file. $!\n"; while(defined($line1=)) { - if($line1 =~ /^\$ mkfile/){ #command line - $line1 =~ s/\$ //g; - chomp $line1; - print "-- Tesh exec_line : $line1\n"; - $line1 =~ s/mkfile//g; - `rm -f $line1`; - foreach(@buffer) - { - `echo $_ >> $line1`; - } - $execline = $line1; - @buffer = (); + if($line1 =~ /^\$ /){ #command line + $line1 =~ s/\$\{srcdir\:\=\.\}/./g; + $line1 =~ s/\${EXEEXT:=}//g; + $line1 =~ s/^\$\ *//g; + $line1 =~ s/^.\/lua/lua/g; + $line1 =~ s/^.\/ruby/ruby/g; + $line1 =~ s/^.\///g; + $line1 =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g; + chomp $line1; + if(@list1){ + print "[Tesh/CRITICAL] Old result : @list1"; + print "[Tesh/CRITICAL] Previous result not check!"; + die;} + if($parallel == 1) + { + $execline = "$execline \& $line1 2>&1"; + print "[Tesh/INFO] exec_line // : $execline\n"; } - elsif($line1 =~ /^\$/){ #command line + else + { $ok = 1; - $line1 =~ s/\$\{srcdir\:\=\.\}/./g; - $line1 =~ s/\$SG_TEST_EXENV//g; - $line1 =~ s/\$SG_EXENV_TEST//g; - $line1 =~ s/\$EXEEXT//g; - $line1 =~ s/\${EXEEXT:=}//g; - $line1 =~ s/^\$\ *//g; - $line1 =~ s/^.\/lua/lua/g; - $line1 =~ s/^.\/ruby/ruby/g; - $line1 =~ s/^.\///g; - $line1 =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g; - chomp $line1; - $execline = $line1; - print "-- Tesh exec_line : $execline\n"; - $result=`$execline 2>&1`; + $execline = "$line1 2>&1"; + print "[Tesh/INFO] exec_line : $execline\n"; + $result=`$execline`; @list1 = split(/\n/,$result); - - } - elsif($line1 =~ /^\>/){ #expected result line - if($ok == 0){die "No command line$!";} - $ok1 = 1; - $line1 =~ s/^\> //g; - $line1 =~ s/\r//g; - chomp $line1; - push @list2, $line1; } - elsif($line1 =~ /^\&1"; + print "[Tesh/INFO] exec_line // : $execline\n"; } - elsif($line1 =~ /^p/){ #comment - $line1 =~ s/^p //g; - $line1 =~ s/\r//g; - chomp $line1; - print "-- Tesh comment_line :$line1\n"; + else + { + $parallel = 1; + $execline = "$line1 2>&1"; + print "[Tesh/INFO] exec_line // : $execline\n"; } - elsif($line1 =~ /^! output sort/){ #output sort - $sort=1; + + } + elsif($line1 =~ /^\>/){ #expected result line + if($ok == 0 and $parallel== 0){die "No command line\n";} + $ok1 = 1; + $line1 =~ s/^\> //g; + $line1 =~ s/\r//g; + chomp $line1; + push @list2, $line1; + } + elsif($line1 =~ /^\)) { $line1 = shift (@list1); $line2 = shift (@list2); - if($line1 eq $line2){} + if($line2 and $line1) + { + if($line1 eq $line2){ + if($verbose == 1){print "$line1\n";} + else{push @buffer, "$line1\n";} + + } + else + { if($verbose == 0){print @buffer}; + if($line2) {print "- $line2\n"}; + if($line1) {print "+ $line1\n"}; + die; + } + } else - { print "- $line2\n"; - print "+ $line1\n"; - die;} + { if($verbose == 0){print @buffer}; + if($line2) {print "- $line2\n"}; + if($line1) {print "+ $line1\n"}; + die; + } } $ok = 0; $ok1= 0; @list1=(); @list2=(); - } -} - -if($ok == 1 and $ok1 == 1) -{ - while(@list1 or @list2) - { - $line1 = shift (@list1); - $line2 = shift (@list2); - if($line1 eq $line2){} - else - { print "- $line1\n"; - print "+ $line2\n"; - die;} - } - $ok = 0; - $ok1= 0; - @list1=(); - @list2=(); + @buffer = (); } \ No newline at end of file