diff options
author | Jean Delvare <jdelvare@suse.de> | 2014-02-12 21:03:03 +0100 |
---|---|---|
committer | Jean Delvare <jdelvare@suse.de> | 2014-02-12 21:03:03 +0100 |
commit | 1b9b6c60abb2537c114828ea597fad65c26ea51a (patch) | |
tree | e9e4dd5e0b2eced924b97902f811063afe3b993a /test/run | |
parent | 99f476f69953f003be13df3f8f1bb19536826212 (diff) | |
download | quilt-1b9b6c60abb2537c114828ea597fad65c26ea51a.tar.gz |
test/run: Minor performance optimizations
* Don't set $needs_shell before we need it. When handling commands
internally, we don't care about $needs_shell.
* Use a single regexp to set $use_re.
* Clear $good as soon as a test fails, instead of grepping for
failures later.
Diffstat (limited to 'test/run')
-rwxr-xr-x | test/run | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -119,7 +119,7 @@ sub exec_test($$) { my ($raw_prog, $in) = @_; local (*IN, *IN_DUP, *IN2, *OUT_DUP, *OUT, *OUT2); my $prog = [ shellwords($raw_prog) ]; - my $needs_shell = ($raw_prog =~ /[][|&<>;`\$*?]/); + my $needs_shell; if ($prog->[0] eq "umask") { umask oct $prog->[1]; @@ -139,6 +139,8 @@ sub exec_test($$) { return 0, []; } + $needs_shell = ($raw_prog =~ /[][|&<>;`\$*?]/); + pipe *IN2, *OUT or die "Can't create pipe for reading: $!"; open *IN_DUP, "<&STDIN" @@ -219,23 +221,20 @@ sub process_test($$$$) { print_body "[$prog_line] \$ $prog -- "; my ($exec_status, $result) = exec_test($prog, $in); my @good = (); + my $good = 1; my $nmax = (@$out > @$result) ? @$out : @$result; for (my $n = 0; $n < $nmax; $n++) { - my $use_re; - if (defined $out->[$n] && $out->[$n] =~ /^~ /) { - $use_re = 1; - $out->[$n] =~ s/^~ //g; - } + my $use_re = defined($out->[$n]) && ($out->[$n] =~ s/^~ //); if (!defined($out->[$n]) || !defined($result->[$n]) || (!$use_re && $result->[$n] ne $out->[$n]) || ( $use_re && $result->[$n] !~ /^$out->[$n]/)) { push @good, ($use_re ? '!~' : '!='); + $good = 0; } else { push @good, ($use_re ? '=~' : '=='); } } - my $good = !grep(/!/, @good); $tests++; $failed++ unless $good; print_body(($good ? $OK : $FAILED)."\n"); |