X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a28dedaf2332717573b47c4a44684ed9e61e2acf..9c53d11f3dbe8183a96a65bac266577e85e72ebe:/buildtools/Cmake/Scripts/tesh.pl diff --git a/buildtools/Cmake/Scripts/tesh.pl b/buildtools/Cmake/Scripts/tesh.pl index a5b53c437a..aef4938ff3 100755 --- a/buildtools/Cmake/Scripts/tesh.pl +++ b/buildtools/Cmake/Scripts/tesh.pl @@ -13,8 +13,8 @@ tesh -- testing shell B [I] I =cut -my($bindir); -my($srcdir); +my($bindir)="."; +my($srcdir)="."; my $path = $0; $path =~ s|[^/]*$||; push @INC,$path; @@ -25,13 +25,23 @@ use Term::ANSIColor; use IPC::Open3; my($OS)=`echo %OS%`; -if($OS eq "%OS%"){ +if($OS eq "%OS%\n"){ $OS = "UNIX"; } else{ + print("$OS and %OS%\n"); $OS = "WIN"; } + +sub trim($) +{ + my $string = shift; + $string =~ s/^\s+//; + $string =~ s/\s+$//; + return $string; +} + print "OS: ".$OS."\n"; # make sure we received a tesh file @@ -59,8 +69,14 @@ sub cd_cmd { } sub setenv_cmd { - if ($_[1] =~ /^(.*)=(.*)$/) { - my($var,$ctn)=($1,$2); + my($var,$ctn); + if ($_[0] =~ /^(.*)=(.*)$/) { + ($var,$ctn)=($1,$2); + }elsif ($_[1] =~ /^(.*)=(.*)$/) { + ($var,$ctn)=($1,$2); + } else { + die "[Tesh/CRITICAL] Malformed argument to setenv: expected 'name=value' but got '$_[1]'\n"; + } if($var =~ /bindir/){ print "[Tesh/INFO] setenv $var=$ctn\n"; @@ -76,9 +92,6 @@ sub setenv_cmd { print "[Tesh/INFO] setenv $var=$ctn\n"; } } - } else { - die "[Tesh/CRITICAL] Malformed argument to setenv: expected 'name=value' but got '$_[1]'\n"; - } } # Main option parsing sub @@ -220,12 +233,25 @@ sub exec_cmd { my @got; while(defined(my $got=)) { $got =~ s/\r//g; - #$got =~ s/^( )*//g; + $got =~ s/^( )*//g; chomp $got; - push @got, "$got"; + $got=trim($got); + if( $got ne ""){ + push @got, "$got"; + } } close OUT; - + + if ($sort){ + sub mysort{ + $a cmp $b + } + use sort qw(defaults _quicksort); # force quicksort + @got = sort mysort @got; + #also resort the other one, as perl sort is not the same as the C one used to generate teshes + @{$cmd{'out'}}=sort mysort @{$cmd{'out'}}; + } + # Cleanup the executing child, and kill the timeouter brother on need $cmd{'return'} = 0 unless defined($cmd{'return'}); my $wantret = "returned code ".(defined($cmd{'return'})? $cmd{'return'} : 0); @@ -304,7 +330,10 @@ LINE: while (defined(my $line=)) { if ($cmd =~ /^#/) { #comment } elsif ($cmd eq '> '){ #expected result line print "[TESH/debug] push expected result\n" if $opts{'debug'}; - push @{$cmd{'out'}}, $arg; + $arg=trim($arg); + if($arg ne ""){ + push @{$cmd{'out'}}, $arg; + } } elsif ($cmd eq '< ') { # provided input print "[TESH/debug] push provided input\n" if $opts{'debug'}; @@ -346,6 +375,7 @@ LINE: while (defined(my $line=)) { $cmd{'cmd'} = $arg; } elsif($line =~ /^! output sort/){ #output sort + $sort=1; $cmd{'sort'} = 1; } elsif($line =~ /^! output ignore/){ #output ignore