]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/qspawn.t
www: drop --subject from "git send-email" instructions
[public-inbox.git] / t / qspawn.t
index 58c6febb544738e1b99465e8ba74037a812f0681..4b9dc8a535debf7a10b4a8f79b95f4e20313c871 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright (C) 2016-2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+use strict;
 use Test::More;
 use_ok 'PublicInbox::Qspawn';
 
@@ -9,6 +10,11 @@ use_ok 'PublicInbox::Qspawn';
        my $res;
        $qsp->psgi_qx({}, undef, sub { $res = ${$_[0]} });
        is($res, "err\nout\n", 'captured stderr and stdout');
+
+       $res = undef;
+       $qsp = PublicInbox::Qspawn->new($cmd, {}, { 2 => \*STDOUT });
+       $qsp->psgi_qx({}, undef, sub { $res = ${$_[0]} });
+       is($res, "err\nout\n", 'captured stderr and stdout');
 }
 
 sub finish_err ($) {
@@ -22,9 +28,9 @@ my $limiter = PublicInbox::Qspawn::Limiter->new(1);
        my $x = PublicInbox::Qspawn->new([qw(true)]);
        my $run = 0;
        $x->start($limiter, sub {
-               my ($rpipe) = @_;
-               is(0, sysread($rpipe, my $buf, 1), 'read zero bytes');
-               ok(!finish_err($x), 'no error on finish');
+               my ($self) = @_;
+               is(0, sysread($self->{rpipe}, my $buf, 1), 'read zero bytes');
+               ok(!finish_err($self), 'no error on finish');
                $run = 1;
        });
        is($run, 1, 'callback ran alright');
@@ -34,9 +40,10 @@ my $limiter = PublicInbox::Qspawn::Limiter->new(1);
        my $x = PublicInbox::Qspawn->new([qw(false)]);
        my $run = 0;
        $x->start($limiter, sub {
-               my ($rpipe) = @_;
-               is(0, sysread($rpipe, my $buf, 1), 'read zero bytes from false');
-               ok(finish_err($x), 'error on finish');
+               my ($self) = @_;
+               is(0, sysread($self->{rpipe}, my $buf, 1),
+                               'read zero bytes from false');
+               ok(finish_err($self), 'error on finish');
                $run = 1;
        });
        is($run, 1, 'callback ran alright');
@@ -46,16 +53,16 @@ foreach my $cmd ([qw(sleep 1)], [qw(sh -c), 'sleep 1; false']) {
        my $s = PublicInbox::Qspawn->new($cmd);
        my @run;
        $s->start($limiter, sub {
-               my ($rpipe) = @_;
+               my ($self) = @_;
                push @run, 'sleep';
-               is(0, sysread($rpipe, my $buf, 1), 'read zero bytes');
+               is(0, sysread($self->{rpipe}, my $buf, 1), 'read zero bytes');
        });
        my $n = 0;
        my @t = map {
                my $i = $n++;
                my $x = PublicInbox::Qspawn->new([qw(true)]);
                $x->start($limiter, sub {
-                       my ($rpipe) = @_;
+                       my ($self) = @_;
                        push @run, $i;
                });
                [$x, $i]