}
if ($cmd{'sort'}){
+ # Save the unsorted observed output to report it on error.
+ map { push @{$cmd{'unsorted got'}}, $_ } @got;
+
sub mysort{
substr($a, 0, $sort_prefix) cmp substr($b, 0, $sort_prefix)
}
shift @got;
}
- #also resort the other one, as perl sort is not the same as the C one used to generate teshes
+ # Sort the expected output to make it easier to write for humans
if(defined($cmd{'out'})){
@{$cmd{'out'}}=sort mysort @{$cmd{'out'}};
while (@{$cmd{'out'}} and ${$cmd{'out'}}[0] eq "") {
}
}
- #Did we timeout ? If yes, handle it. If not, kill the forked process.
+ # Did we timeout ? If yes, handle it. If not, kill the forked process.
if($timeout==-1 and $gotret eq "got signal SIGKILL"){
$gotret="return code 0";
print "(ignoring the output of <$cmd{'file'}:$cmd{'line'}> as requested)\n"
}
if (length $diff) {
- print "Output of <$cmd{'file'}:$cmd{'line'}> mismatch:\n";
+ print "Output of <$cmd{'file'}:$cmd{'line'}> mismatch".($cmd{'sort'}?" (even after sorting)":"").":\n";
map { print "$_\n" } split(/\n/,$diff);
+ if ($cmd{'sort'}) {
+ print "WARNING: both the observed output and expected output were sorted as requested.\n";
+ print "----8<--------------- Begin of unprocessed observed output (as it should appear in file):\n";
+ map {print "> $_\n"} @{$cmd{'unsorted got'}};
+ print "--------------->8---- End of the unprocessed observed output.\n";
+ }
print "Test suite `$cmd{'file'}': NOK (<$cmd{'file'}:$cmd{'line'}> output mismatch)\n";
$error=1;