use File::Spec::Functions qw/catdir catfile/;
use File::Temp qw/tempfile tempdir/;
-use Test::More tests => 2 + 2 * 2 + 11 * (3 + 1);
+use Test::More tests => 2 + 2 * 4 + 11 * (3 + 1 + 3 + 6);
+use App::Rgit::Utils qw/:codes/;
use App::Rgit;
sub build {
'^n'
], @expected;
-for my $cmd (qw/commit FAIL/) {
+sub try {
+ my ($cmd, $exp, $policy) = @_;
my ($fh, $filename) = tempfile(UNLINK => 1);
my $ar = App::Rgit->new(
- git => abs_path('t/bin/git'),
- root => $tmpdir,
- cmd => $cmd,
- args => [ abs_path($filename), $cmd, qw/^n ^g ^w ^b ^G ^W ^B ^R ^^n/ ]
+ git => abs_path('t/bin/git'),
+ root => $tmpdir,
+ cmd => $cmd,
+ args => [ abs_path($filename), $cmd, qw/^n ^g ^w ^b ^G ^W ^B ^R ^^n/ ],
+ policy => $policy,
);
isnt($ar, undef, "each $cmd has a defined object");
my $exit = $ar->run;
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 ];
+ $exp = [ map [ $cmd, @$_ ], @$exp ];
for my $i (0 .. $#$exp) {
my $e = $exp->[$i];
my $r = shift @$res;
}
}
}
+
+try 'commit', [ @expected ];
+try 'FAIL', [ $expected[0] ];
+try 'FAIL', [ @expected ],
+ sub { NEXT | SAVE };
+my $c = 0;
+try 'FAIL', [ map { ($expected[$_]) x 2 } 0 .. $#expected ],
+ sub { my $ret = $c ? undef : REDO; $c = 1 - $c; $ret };