The following commit has been merged in the master branch:
commit f85156c2469de1f9637f444a4c4e8dd9396ee106
Author: Niels Thykier <ni...@thykier.net>
Date:   Thu Aug 18 22:23:18 2011 +0200

    Do not use Lintian::Command (or IPC::Run) in t/runtests
    
    Testing suggested that the dead-lock test dead-lock appears to be
    related to the lintian sub-process and only spawn (using IPC::Run)
    started that process.

diff --git a/t/runtests b/t/runtests
index 9ddd7de..133cf38 100755
--- a/t/runtests
+++ b/t/runtests
@@ -58,7 +58,6 @@ BEGIN {
 
 use lib "$ENV{'LINTIAN_ROOT'}/lib";
 
-use Lintian::Command qw(spawn);
 use Util;
 
 # --- Global configuration
@@ -441,24 +440,31 @@ sub _builder_tests {
 sub run_lintian {
     my ($testdata, $file, $out) = @_;
     msg_print 'testing... ';
-    my $opts = { err => "$out", fail => 'never' };
-    my $status;
-    my @options = split(' ', $testdata->{options}//'');
+    my $status = 0;
+    # Quote (A test use -L <=, which blows up if we don't... plus it is safer 
that way)
+    my @options = map { quotemeta $_ } split(' ', $testdata->{options}//'');
+    my $cmd;
+    my $ret;
     unshift(@options, '--allow-root', '--no-cfg');
     unshift(@options, '--profile', $testdata->{profile}) if 
$testdata->{profile};
-    if ($testdata->{sort}) {
-       $status = spawn($opts, [ $LINTIAN, @options, $file ], '|', [ 'sort' ]);
+    $cmd = "$LINTIAN " . join(' ', @options). " $file 2>&1";
+    if (open my $in, '-|', $cmd) {
+       my @data = <$in>;
+       close $in;
+       $status = ($? >> 8) & 255;
+       @data = sort @data if $testdata->{sort};
+       open my $fd, '>', $out or fail "opening $out: $!";
+       print $fd $_ for @data;
+       close $fd or fail "closing $out: $!";
     } else {
-       $status = spawn($opts, [ $LINTIAN, @options, $file ]);
+       # Set it to 255 so it fails below
+       $status = 255;
     }
+
     unless ($status == 0 or $status == 1) {
        msg_print "FAILED:\n";
        fail("$LINTIAN @options $file exited with status $status\n");
     }
-    open(my $fd, '>>', "$out")
-       or fail("cannot append to $out: $!");
-    print $fd ${ $opts->{out} };
-    close $fd or fail "closing $out: $!";
     return 1;
 }
 

-- 
Debian package checker


-- 
To UNSUBSCRIBE, email to debian-lint-maint-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1qu9e6-0005ne...@vasks.debian.org

Reply via email to