From e9d3b15754c61017423b3abc8cf6baab78d04a7e Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Sat, 21 Jan 2006 20:36:09 +0000 Subject: - test/run: Support regex matching in test scripts. --- test/run | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'test') 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); } } -- cgit