# New Ticket Created by "brian d foy"
# Please include the string: [perl #130653]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=130653 >
It seems that the exit value that a Proc object returns isn't
always what I expect. In the calls where I specify :out, the
exit code seems to always be 0.
use Test;
my $program = '/usr/bin/false'; # maybe yours is different
ok $program.IO.e, 'program exists';
subtest {
my $proc = run $program;
is $proc.exitcode, 1, 'No arguments';
}, 'run with no arguments';
subtest {
my $proc = run $program, :out;
is $proc.exitcode, 1, 'Output specified, check exit before
read'; # is it finished running?
$proc.out.slurp-rest;
}, 'run with :out argument, read after';
subtest {
my $proc = run $program, :out;
$proc.out.slurp-rest;
is $proc.exitcode, 1, 'Output, check exit after read';
}, 'run with :out argument, read first';
subtest {
my $null = $*SPEC.devnull.IO.open;
# the program shouldn't compile and perl6 should return 1
my $proc = run $*EXECUTABLE, '-c', $program, :out, :err($null);
$proc.out.slurp-rest;
is $proc.exitcode, 1, 'Output, check exit after read';
}, 'compile check, read first';
done-testing();
And, the output:
ok 1 - program exists
ok 1 - No arguments
1..1
ok 2 - run with no arguments
not ok 1 - Output specified, check exit before read
1..1
not ok 3 - run with :out argument, read after
not ok 1 - Output, check exit after read
1..1
not ok 4 - run with :out argument, read first
not ok 1 - Output, check exit after read
1..1
not ok 5 - run with :out argument, read first
1..5
# Failed test 'Output specified, check exit before read'
# at /Users/brian/Desktop/false.p6 line 18
# expected: '1'
# got: '0'
# Looks like you failed 1 test of 1
# Failed test 'run with :out argument, read after'
# at /Users/brian/Desktop/false.p6 line 16
# Failed test 'Output, check exit after read'
# at /Users/brian/Desktop/false.p6 line 25
# expected: '1'
# got: '0'
# Looks like you failed 1 test of 1
# Failed test 'run with :out argument, read first'
# at /Users/brian/Desktop/false.p6 line 22
# Failed test 'Output, check exit after read'
# at /Users/brian/Desktop/false.p6 line 33
# expected: '1'
# got: '0'
# Looks like you failed 1 test of 1
# Failed test 'run with :out argument, read first'
# at /Users/brian/Desktop/false.p6 line 28
# Looks like you failed 3 tests of 5
The details:
$ perl6 -v && uname -a
This is Rakudo version 2016.11 built on MoarVM version 2016.11
implementing Perl 6.c.
Darwin macpro.local 14.5.0 Darwin Kernel Version 14.5.0