|
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");
|