X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fqspawn.t;h=e37a05fd73a2cb01b015cf8b1c12c0a27a526d4e;hb=0acad050fe38033baedfed83f5976aeabebf3287;hp=58c6febb544738e1b99465e8ba74037a812f0681;hpb=7227d5882471e32858e460043e2dd69b4a926d4a;p=public-inbox.git diff --git a/t/qspawn.t b/t/qspawn.t index 58c6febb..e37a05fd 100644 --- a/t/qspawn.t +++ b/t/qspawn.t @@ -1,5 +1,6 @@ -# Copyright (C) 2016-2019 all contributors +# Copyright (C) 2016-2020 all contributors # License: AGPL-3.0+ +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]