X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fqspawn.t;h=4b9dc8a535debf7a10b4a8f79b95f4e20313c871;hb=2f8d15b1170b137a0512a4f3163b236a5dcbf0b8;hp=fc288a2de0bc32ce6be585b4b2dcb23b288001df;hpb=6b071c721412bc1c8e3fae7d85b22bd5f87ca9fb;p=public-inbox.git diff --git a/t/qspawn.t b/t/qspawn.t index fc288a2d..4b9dc8a5 100644 --- a/t/qspawn.t +++ b/t/qspawn.t @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2019 all contributors +# Copyright (C) 2016-2021 all contributors # License: AGPL-3.0+ use strict; use Test::More; @@ -10,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 ($) { @@ -23,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'); @@ -35,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'); @@ -47,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]