5 if($#ARGV<0){die "Usage: tesh.pl <options> <teshfile.tesh>\n";}
26 if($ARGV[$nb_arg] =~ /^--cd$/)
29 if(!$ARGV[$nb_arg] or $ARGV[$nb_arg] =~ /^--/){die "Usage: tesh.pl --cd <directory>\n";}
30 my($directory)=$ARGV[$nb_arg];
34 print "[Tesh/INFO] Change directory to \"$directory\"\n";
38 die "[Tesh/CRITICAL] Directory not found : \"$directory\"\n";
42 elsif($ARGV[$nb_arg] =~ /^--setenv$/)
45 if(!$ARGV[$nb_arg] or $ARGV[$nb_arg] =~ /^--/){die "Usage: tesh.pl --setenv environment_variable\n";}
46 if(!$ARGV[$nb_arg+1] or $ARGV[$nb_arg+1] =~ /^--/){die "Usage: tesh.pl --setenv environment_variable\n";}
47 $ENV{$ARGV[$nb_arg]} = "$ENV{$ARGV[$nb_arg]}:$ARGV[$nb_arg+1]";
48 print "[Tesh/INFO] export $ARGV[$nb_arg]=\"$ENV{$ARGV[$nb_arg]}\"\n";
52 elsif($ARGV[$nb_arg] =~ /^--verbose$/)
58 print "[Tesh/CRITICAL] Unrecognized option : $ARGV[$nb_arg]\n";
61 }while(($nb_arg) < $#ARGV);
63 #Add current directory to path
64 $ENV{PATH} = "$ENV{PATH}:.";
67 if(!$ARGV[$nb_arg]){die "tesh.pl <options> <teshfile.tesh>\n";}
68 print "[Tesh/INFO] load file : $ARGV[$nb_arg]\n";
69 my($file)=$ARGV[$nb_arg];
70 open SH_LIGNE, $file or die "[Tesh/CRITICAL] Unable to open $file. $!\n";
72 while(defined($line1=<SH_LIGNE>))
74 if($line1 =~ /^\$ /){ #command line
75 $line1 =~ s/\$\{srcdir\:\=\.\}/./g;
76 $line1 =~ s/\${EXEEXT:=}//g;
77 $line1 =~ s/^\$\ *//g;
78 $line1 =~ s/^.\/lua/lua/g;
79 $line1 =~ s/^.\/ruby/ruby/g;
81 $line1 =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g;
84 print "[Tesh/CRITICAL] Old result : @list1";
85 print "[Tesh/CRITICAL] Previous result not check!";
89 $execline = "$execline \& $line1 2>&1";
90 print "[Tesh/INFO] exec_line // : $execline\n";
95 $execline = "$line1 2>&1";
96 print "[Tesh/INFO] exec_line : $execline\n";
98 @list1 = split(/\n/,$result);
101 elsif($line1 =~ /^\& /){ # parallel command line
102 $line1 =~ s/\$\{srcdir\:\=\.\}/./g;
103 $line1 =~ s/\${EXEEXT:=}//g;
105 $line1 =~ s/^.\/lua/lua/g;
106 $line1 =~ s/^.\/ruby/ruby/g;
108 $line1 =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g;
111 print "Old result : @list1";
112 die "Previous result not check!";}
115 $execline = "$execline \& $line1 2>&1";
116 print "[Tesh/INFO] exec_line // : $execline\n";
121 $execline = "$line1 2>&1";
122 print "[Tesh/INFO] exec_line // : $execline\n";
126 elsif($line1 =~ /^\>/){ #expected result line
127 if($ok == 0 and $parallel== 0){die "No command line\n";}
134 elsif($line1 =~ /^\</ or $encore==1){ #need to buffer
138 if($line1 =~ /\\$/) # need to store this line into old_buff
142 $old_buffer = "$old_buffer$line1";
148 push @buffer, "$old_buffer$line1";
154 push @buffer, "$line1\n";
160 elsif($line1 =~ /^p/){ #comment
164 print "[Tesh/INFO] comment_line :$line1\n";
166 elsif($line1 =~ /^! output sort/){ #output sort
167 print "[Tesh/INFO] output sort\n";
170 elsif($line1 =~ /^! expect return/){ #expect sort
171 print "[Tesh/CRITICAL] expect return\n";
174 elsif($line1 =~ /^! setenv/){ #setenv
175 $line1 =~ s/^! setenv //g;
178 $line1 =~ /^(.*)=(.*)$/;
180 print "[Tesh/INFO] setenv: $1=$2\n";
182 elsif($line1 =~ /^! include/){ #output sort
183 die "[Tesh/CRITICAL] need include\n";
185 elsif($line1 =~ /^! timeout/){ #timeout
186 $line1 =~ s/^! timeout //g;
190 print "[Tesh/INFO] timeout : $timeout\n";
192 elsif($ok == 1 and $ok1 == 1)
197 @list3 = sort @list1;
202 @list3 = sort @list2;
209 while(@list1 or @list2)
211 $line1 = shift (@list1);
212 $line2 = shift (@list2);
213 if($line2 and $line1)
215 if($line1 eq $line2){
216 if($verbose == 1){print "$line1\n";}
217 else{push @buffer, "$line1\n";}
221 { if($verbose == 0){print @buffer};
222 if($line2) {print "- $line2\n"};
223 if($line1) {print "+ $line1\n"};
228 { if($verbose == 0){print @buffer};
229 if($line2) {print "- $line2\n"};
230 if($line1) {print "+ $line1\n"};
247 @list1 = split(/\n/,$result);
249 elsif($ok == 1 and $ok1 == 1)
254 @list3 = sort @list1;
259 @list3 = sort @list2;
266 while(@list1 or @list2)
268 $line1 = shift (@list1);
269 $line2 = shift (@list2);
270 if($line2 and $line1)
272 if($line1 eq $line2){
273 if($verbose == 1){print "$line1\n";}
274 else{push @buffer, "$line1\n";}
278 { if($verbose == 0){print @buffer};
279 if($line2) {print "- $line2\n"};
280 if($line1) {print "+ $line1\n"};
285 { if($verbose == 0){print @buffer};
286 if($line2) {print "- $line2\n"};
287 if($line1) {print "+ $line1\n"};