added loop feature (variable loop = $count) to execute the same test multiple times

This commit is contained in:
TLINDEN
2014-03-14 15:50:32 +01:00
parent 92c14cc621
commit 85e2853925

View File

@@ -63,6 +63,7 @@ else {
$continue = &runtest($cfg{test}->{$test}, $test); $continue = &runtest($cfg{test}->{$test}, $test);
if (!$continue) { if (!$continue) {
print "Last failed check: $test\n"; print "Last failed check: $test\n";
break;
} }
} }
} }
@@ -73,6 +74,16 @@ sub runtest {
my($cfg, $name) = @_; my($cfg, $name) = @_;
my($in, $out, $error, $timeout); my($in, $out, $error, $timeout);
if (exists $cfg->{loop}) {
my $loop = delete $cfg->{loop};
foreach my $n (0 .. $loop) {
if (&runtest($cfg, "${name}-loop-${n}") == 0) {
return 0;
}
}
return 1;
}
foreach my $key (keys %{$cfg}) { foreach my $key (keys %{$cfg}) {
$cfg->{$key} =~ s/\`([^\`]*)\`/my $result = `$1`; chomp $result; $result/ge; $cfg->{$key} =~ s/\`([^\`]*)\`/my $result = `$1`; chomp $result; $result/ge;
} }
@@ -117,8 +128,13 @@ sub runtest {
$output =~ s/^\s*//; $output =~ s/^\s*//;
$output =~ s/\s*$//; $output =~ s/\s*$//;
printf "$output\n" if $verbose > 1;
if (exists $cfg->{expect}) { if (exists $cfg->{expect}) {
if ($cfg->{expect} =~ /^\//) { if ($cfg->{expect} =~ /^!(\/.*)/) {
unlike($output, $1, "$name") or return final 0;
}
elsif ($cfg->{expect} =~ /^\//) {
like($output, $cfg->{expect}, "$name") or return final 0; like($output, $cfg->{expect}, "$name") or return final 0;
} }
else { else {
@@ -172,6 +188,7 @@ done_testing;
sub final { sub final {
my $ret = shift; my $ret = shift;
system("stty echo"); # turn echo on, just in case a prompt timed out
if ($output =~ /(segmentation fault|bus error)/i || -s "pcp1.core") { if ($output =~ /(segmentation fault|bus error)/i || -s "pcp1.core") {
# override $ret # override $ret
$ret = 0; $ret = 0;