summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruen@suse.de>2006-01-21 20:36:09 +0000
committerAndreas Gruenbacher <agruen@suse.de>2006-01-21 20:36:09 +0000
commite9d3b15754c61017423b3abc8cf6baab78d04a7e (patch)
tree6776137f0d162f63c6927206335d42f95a671426 /test
parenta8879ce02c157be20de1a921debd8cc11ef95496 (diff)
downloadquilt-e9d3b15754c61017423b3abc8cf6baab78d04a7e.tar.gz
- test/run: Support regex matching in test scripts.
Diffstat (limited to 'test')
-rwxr-xr-xtest/run25
1 files changed, 16 insertions, 9 deletions
diff --git a/test/run b/test/run
index 695a125..a4c6951 100755
--- a/test/run
+++ b/test/run
@@ -87,18 +87,27 @@ sub process_test($$$$) {
print "[$prog_line] \$ ", join(' ',
map { s/\s/\\$&/g; $_ } @$p), " -- ";
my $result = exec_test($prog, $in);
- my $good = 1;
+ my @good = ();
+ my $good;
my $nmax = (@$out > @$result) ? @$out : @$result;
for (my $n=0; $n < $nmax; $n++) {
- if (!defined($out->[$n]) || !defined($result->[$n]) ||
- $out->[$n] ne $result->[$n]) {
- $good = 0;
- }
+ my $use_re = ($out->[$n] =~ /^~ /);
+ $out->[$n] =~ s/^~ //g;
+
+ if (!defined($out->[$n]) || !defined($result->[$n]) ||
+ (!$use_re && $result->[$n] ne $out->[$n]) ||
+ ( $use_re && $result->[$n] !~ /^$out->[$n]/)) {
+ push @good, ($use_re ? '!~' : '!=');
+ }
+ else {
+ push @good, ($use_re ? '=~' : '==');
+ }
}
+ my $good = !(grep /!/, @good);
$tests++;
$failed++ unless $good;
print $good ? $OK : $FAILED, "\n";
- if (!$good) {
+ if (!$good || $opt_v) {
for (my $n=0; $n < $nmax; $n++) {
my $l = defined($out->[$n]) ? $out->[$n] : "~";
chomp $l;
@@ -106,10 +115,8 @@ sub process_test($$$$) {
chomp $r;
print sprintf("%-" . ($width-3) .
"s %s %-" . ($width-1) .
- "s\n", $l, $l eq $r ? '|' : '?', $r);
+ "s\n", $r, $good[$n], $l);
}
- } elsif ($opt_v) {
- print join('', @$result);
}
}