'File::Spec::Functions' => 0,
'List::Util' => 0,
'Object::Tiny' => 0,
+ 'POSIX' => 0,
},
dist => {
PREOP => 'pod2text bin/rgit > $(DISTVNAME)/README; '
=head1 DEPENDENCIES
-The core modules L<Carp>, L<Cwd>, L<Exporter>, L<File::Find>, L<File::Spec::Functions> and L<List::Util>.
+The core modules L<Carp>, L<Cwd>, L<Exporter>, L<File::Find>, L<File::Spec::Functions>, L<List::Util> and L<POSIX>.
L<Object::Tiny>.
use Cwd qw/cwd abs_path/;
use File::Spec::Functions qw/catdir splitdir abs2rel file_name_is_absolute/;
+use POSIX qw/WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG SIGINT SIGQUIT/;
use Object::Tiny qw/fake repo bare name work/;
s/\^([\^ngGwWbBR])/$escapes{$1}->()/eg for @args;
}
system { $conf->git } $conf->git, @args;
+ if ($? == -1) {
+ warn "Failed to execute git: $!\n";
+ return -1, -1;
+ }
+ my $ret;
+ $ret = WEXITSTATUS($?) if WIFEXITED($?);
+ my $sig;
+ if (WIFSIGNALED($?)) {
+ $sig = WTERMSIG($?);
+ warn "git died with signal $sig\n";
+ if ($sig == SIGINT || $sig == SIGQUIT) {
+ warn "Aborting.\n";
+ exit $sig;
+ }
+ } elsif ($ret) {
+ warn "git returned $ret\n";
+ }
+ return wantarray ? ($ret, $sig) : $ret;
}
=head2 C<fake>
isnt($ar, undef, "each $cmd has a defined object");
my $exit = $ar->run;
my $fail = $cmd eq 'FAIL' ? 1 : 0;
- is($exit, $fail << 8, "each $cmd returned $fail");
+ is($exit, $fail, "each $cmd returned $fail");
my @lines = split /\n/, do { local $/; <$fh> };
my $res = [ map [ split /\|/, $_ ], @lines ];
my $exp = [ map [ $cmd, @$_ ], $fail ? $expected[0] : @expected ];