tests: support test definitions with up to 5 file checks in <verify> section
authorYang Tse <yangsita@gmail.com>
Fri, 1 Jun 2012 03:37:00 +0000 (05:37 +0200)
committerYang Tse <yangsita@gmail.com>
Fri, 1 Jun 2012 03:37:00 +0000 (05:37 +0200)
This is done introducing tags <file1> to <file4> besides existing <file> one,
as well as corresponding <stripfile1> to <stripfile4> ones, that can be used
in the <verify> section in the same way as the non-numbered ones.

tests/runtests.pl

index a984e8c..65dd961 100755 (executable)
@@ -3496,53 +3496,55 @@ sub singletest {
         $ok .= "-"; # protocol not checked
     }
 
-    my @outfile=getpart("verify", "file");
-    if(@outfile) {
-        # we're supposed to verify a dynamically generated file!
-        my %hash = getpartattr("verify", "file");
-
-        my $filename=$hash{'name'};
-        if(!$filename) {
-            logmsg "ERROR: section verify=>file has no name attribute\n";
-            stopservers($verbose);
-            # timestamp test result verification end
-            $timevrfyend{$testnum} = Time::HiRes::time() if($timestats);
-            return -1;
-        }
-        my @generated=loadarray($filename);
+    my $outputok;
+    for my $partsuffix (('', '1', '2', '3', '4')) {
+        my @outfile=getpart("verify", "file".$partsuffix);
+        if(@outfile) {
+            # we're supposed to verify a dynamically generated file!
+            my %hash = getpartattr("verify", "file".$partsuffix);
+
+            my $filename=$hash{'name'};
+            if(!$filename) {
+                logmsg "ERROR: section verify=>file$partsuffix ".
+                       "has no name attribute\n";
+                stopservers($verbose);
+                # timestamp test result verification end
+                $timevrfyend{$testnum} = Time::HiRes::time() if($timestats);
+                return -1;
+            }
+            my @generated=loadarray($filename);
 
-        # what parts to cut off from the file
-        my @stripfile = getpart("verify", "stripfile");
+            # what parts to cut off from the file
+            my @stripfile = getpart("verify", "stripfile".$partsuffix);
 
-        my $filemode=$hash{'mode'};
-        if($filemode && ($filemode eq "text") && $has_textaware) {
-            # text mode when running on windows means adding an extra
-            # strip expression
-            push @stripfile, "s/\r\n/\n/";
-        }
+            my $filemode=$hash{'mode'};
+            if($filemode && ($filemode eq "text") && $has_textaware) {
+                # text mode when running on windows means adding an extra
+                # strip expression
+                push @stripfile, "s/\r\n/\n/";
+            }
 
-        my $strip;
-        for $strip (@stripfile) {
-            chomp $strip;
-            for(@generated) {
-                eval $strip;
+            my $strip;
+            for $strip (@stripfile) {
+                chomp $strip;
+                for(@generated) {
+                    eval $strip;
+                }
             }
-        }
 
-        @outfile = fixarray(@outfile);
+            @outfile = fixarray(@outfile);
 
-        $res = compare("output", \@generated, \@outfile);
-        if($res) {
-            # timestamp test result verification end
-            $timevrfyend{$testnum} = Time::HiRes::time() if($timestats);
-            return 1;
-        }
+            $res = compare("output ($filename)", \@generated, \@outfile);
+            if($res) {
+                # timestamp test result verification end
+                $timevrfyend{$testnum} = Time::HiRes::time() if($timestats);
+                return 1;
+            }
 
-        $ok .= "o";
-    }
-    else {
-        $ok .= "-"; # output not checked
+            $outputok = 1; # output checked
+        }
     }
+    $ok .= ($outputok) ? "o" : "-"; # output checked or not
 
     # accept multiple comma-separated error codes
     my @splerr = split(/ *, */, $errorcode);