Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix another script.
[simgrid.git] / buildtools / Cmake / tesh.pl
old mode 100644 (file)
new mode 100755 (executable)
index 85ccacc..a1ec8af
-#!perl -w
-use strict;
-use IPC::Open3;
-
-if($#ARGV!=1) {
-    die "Usage: perl tesh.pl <directory> <teshfile.tesh>\n";
-}
-
-my($directory)=$ARGV[0];
-my($file)=$ARGV[1];
-
-chdir("$directory");
-print "Change directory to \"$directory\"\n";
-
-open SH_LIGNE, $file or die "Unable to open $file. $!\n";
-
-my($line1);
-my($line2);
-my($execline);
-my($ok)=0;
-my(@result)=();
-
-while(defined($line1=<SH_LIGNE>))
-{
-               if($line1 =~ /^\$(.*)$/) #command line
-               { 
-               $ok = 1;
-               @result = ();
-                       $line1 =~ s/\$\{srcdir\:\=\.\}/./g;
-                       $line1 =~ s/\$SG_TEST_EXENV//g;
-                       $line1 =~ s/\$EXEEXT//g;
-                       $line1 =~ s/\${EXEEXT:=}//g;
-                       $line1 =~ s/^\$\ */.\//g;
-                       $line1 =~ s/^.\/lua/lua/g;
-                       $line1 =~ s/^.\/ruby/ruby/g;
-                       chomp $line1;
-                       $execline = $line1;
-                       close(FILE_ERR);
-                       close(FILE);
-                       open3("&STDIN",\*FILE,\*FILE_ERR,"$execline") or die "cannot run $execline:\n$!";       
-                       print "$execline";
-                       
-               }
-               elsif($line1 =~ /^\>(.*)$/) #expected result line       
-               {
-                       if($ok == 0){die "No command line$!";}
-                       $line1 =~ s/^\> //g;
-                       chomp $line1;
-                       
-                       if($line1 =~ /^.*\[.*\].*\[.*\/INFO\]/)
-                       {
-                               if(!defined($line2=<FILE_ERR>)){die "Don't have FILE_ERR$!";}
-                       }
-                       else
-                       {
-                               if(!defined($line2=<FILE>)){die "Don't have FILE$!";}
-                       }
-                       
-                       if($line2 =~ /^.*$/) #command result line
-                       {
-                               $line2 =~ s/\r//g;                                                      
-                               chomp $line2;
-                               
-                               if($line2 eq $line1)
-                               {
-                                       push @result, "$line1 \n";
-                               }
-                               else
-                               {
-                                       print @result;
-                                       print "- $line1\n";
-                                       print "+ $line2\n";
-                                       print " NOK";
-                                       die;
-                               }
-                       }
-                       else
-                       {
-                               print @result;
-                               print "- $line1\n";
-                               print "+ $line2\n";
-                               print " NOK";
-                               die;
-                       }
-               }
-               else
-               {
-                       if($ok == 1)
-                       {
-                       print " OK\n";
-                       $ok = 0;                                
-                       }
-                       else
-                       {
-                               print " erreur\n";
-                       }
-               }
-}
-if($ok == 1)
-{
-       print " OK\n";
-       $ok = 0;                                
-}
-close(SH_LIGNE);
-close(FILE_ERR);
+#! /usr/bin/perl -w\r
+\r
+use strict;\r
+\r
+if($#ARGV!=2){die "Usage: tesh.pl --cd <directory> <teshfile.tesh>\n";}\r
+my($line1);\r
+my($line2);\r
+my($execline);\r
+my($ok)=0;\r
+my($nb_arg)=0;\r
+\r
+do{\r
+       if($ARGV[$nb_arg] =~ /^--cd$/)\r
+       {\r
+               $nb_arg++;\r
+               my($directory)=$ARGV[$nb_arg];\r
+               chdir("$directory");\r
+               print "Change directory to \"$directory\"\n";   \r
+       }\r
+       $nb_arg++;\r
+}while(($nb_arg-1)!=$#ARGV);\r
+\r
+my($file)=$ARGV[$nb_arg-1];\r
+open SH_LIGNE, $file or die "Unable to open $file. $!\n";\r
+\r
+while(defined($line1=<SH_LIGNE>))\r
+{\r
+               if($line1 =~ /^\$/){    #command line\r
+                       $ok = 1;\r
+                       $line1 =~ s/\$\{srcdir\:\=\.\}/./g;\r
+                       $line1 =~ s/\$SG_TEST_EXENV//g;\r
+                       $line1 =~ s/\$SG_EXENV_TEST//g;\r
+                       $line1 =~ s/\$EXEEXT//g;\r
+                       $line1 =~ s/\${EXEEXT:=}//g;\r
+                       $line1 =~ s/^\$\ *//g;\r
+                       $line1 =~ s/^.\/lua/lua/g;\r
+                       $line1 =~ s/^.\/ruby/ruby/g;\r
+                       \r
+                       $line1 =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g;\r
+                       chomp $line1;\r
+                       $execline = $line1;\r
+                       print "$execline\n";\r
+                       system "$execline 1>output_tesh.txt 2>output_tesh_err.txt";\r
+                       close(FILE_ERR);\r
+                       close(FILE);\r
+                       open (FILE, "output_tesh.txt");\r
+                       open (FILE_ERR, "output_tesh_err.txt");}\r
+                       \r
+               if($line1 =~ /^\>/){    #expected result line\r
+                       if($ok == 0){die "No command line$!";}\r
+                       $line1 =~ s/^\> //g;\r
+                       $line1 =~ s/\r//g;\r
+                       chomp $line1;\r
+                       \r
+                       if($line1 =~ /^.*\[.*\].*\[.*\/INFO\].*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       elsif($line1 =~ /^.*\[.*\].*\[.*\/WARNING\].*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       elsif($line1 =~ /^.*\[.*\].*\[.*\/CRITICAL\].*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       elsif($line1 =~ /^.*\[.*\].*\[.*\/DEBUG\].*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       elsif($line1 =~ /^.*\[.*\].*\[0\:\@\].*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       elsif($line1 =~ /^.*\[.*\].*\(0\:\@\).*$/)\r
+                               {if(!defined($line2=<FILE_ERR>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}\r
+                       else{if(!defined($line2=<FILE>))\r
+                                       {       print "- $line1\n";\r
+                                               die;}}          \r
+                       $line2 =~ s/\r//g;                                                      \r
+                       chomp $line2;\r
+                       \r
+                       if($line2 eq $line1){}\r
+                       else\r
+                       {       print "- $line1\n";\r
+                               print "+ $line2\n";\r
+                               die;}}  \r
+}\r
+if($ok == 1){\r
+       print "Test of \"$file\" OK\n";\r
+       $ok = 0;}\r
+       \r
+close(SH_LIGNE);\r
+close(FILE_ERR);\r
 close(FILE);
\ No newline at end of file