Blame t/system.t

Packit 6427f8
#!/usr/bin/perl -w
Packit 6427f8
use strict;
Packit 6427f8
Packit 6427f8
use constant NO_SUCH_FILE => 'this_file_had_so_better_not_be_here';
Packit 6427f8
Packit 6427f8
use Test::More;
Packit 6427f8
Packit 6427f8
BEGIN {
Packit 6427f8
Packit 6427f8
    require Fatal;
Packit 6427f8
Packit 6427f8
    eval { require IPC::System::Simple; };
Packit 6427f8
    plan skip_all => 'IPC::System::Simple not installed' if ($@);
Packit 6427f8
Packit 6427f8
    if ($IPC::System::Simple::VERSION < Fatal::MIN_IPC_SYS_SIMPLE_VER()) {
Packit 6427f8
	plan skip_all => 'IPC::System::Simple version is too low';
Packit 6427f8
    }
Packit 6427f8
}
Packit 6427f8
Packit 6427f8
plan tests => 9;
Packit 6427f8
Packit 6427f8
eval {
Packit 6427f8
    use autodie qw(system);
Packit 6427f8
Packit 6427f8
    system($^X,'-e1');
Packit 6427f8
};
Packit 6427f8
Packit 6427f8
ok($? == 0, "system completed successfully");
Packit 6427f8
Packit 6427f8
ok(!$@,"system returning 0 is considered fine.") or diag $@;
Packit 6427f8
Packit 6427f8
eval {
Packit 6427f8
    use autodie qw(system);
Packit 6427f8
Packit 6427f8
    system(NO_SUCH_FILE, "foo");
Packit 6427f8
};
Packit 6427f8
Packit 6427f8
ok($@, "Exception thrown");
Packit 6427f8
isa_ok($@, "autodie::exception") or diag $@;
Packit 6427f8
like($@,qr{failed to start}, "Reason for failure given");
Packit 6427f8
like($@,qr{@{[NO_SUCH_FILE]}},"Failed command given");
Packit 6427f8
Packit 6427f8
# The error should report *this* file.  See RT #38066
Packit 6427f8
like($@,qr{at \Q$0\E line \d});
Packit 6427f8
Packit 6427f8
eval "system { \$^X} 'perl', '-e1'";
Packit 6427f8
is($@,"","Exotic system in same package not harmed");
Packit 6427f8
Packit 6427f8
package Bar;
Packit 6427f8
Packit 6427f8
system { $^X } 'perl','-e1';
Packit 6427f8
::ok(1,"Exotic system in other package not harmed");