X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F20-each.t;h=ea70268904f03bc49d9881b9eb82876e16bcf728;hb=270525a9f32911ff55fc0ee7b263a9eb3cd0a3ce;hp=dfc139b629bd2cce5e538113b35d5b5c603aa988;hpb=84976874ba7cc16560a20dc013ac336fb5aec4b5;p=perl%2Fmodules%2Frgit.git diff --git a/t/20-each.t b/t/20-each.t index dfc139b..ea70268 100644 --- a/t/20-each.t +++ b/t/20-each.t @@ -7,11 +7,15 @@ use Cwd qw/cwd abs_path/; use File::Spec::Functions qw/catdir catfile/; use File::Temp qw/tempfile tempdir/; -use Test::More tests => 2 + 2 * 4 + 11 * (3 + 1 + 3 + 6); +use Test::More tests => 2 + 2 * 4 + 12 * (3 + 1 + 3 + 6); use App::Rgit::Utils qw/:codes/; use App::Rgit; +use lib 't/lib'; + +use App::Rgit::Policy::Callback; + sub build { my ($tree, $prefix) = @_; my @ret; @@ -89,22 +93,31 @@ is(grep({ ref eq 'ARRAY' } @expected), 3, 'all of them are array references'); @$_, map({ catdir($tmpdir, $_) } @{$_}[1 .. 3]), $tmpdir, - '^n' + '%n', '%x' ], @expected; sub try { - my ($cmd, $exp, $policy) = @_; + my ($cmd, $exp) = @_; my ($fh, $filename) = tempfile(UNLINK => 1); + my $policy = App::Rgit::Policy->new( + @_ > 2 ? (name => 'Callback', callback => $_[2]) + : (name => 'Default') + ); 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/ ], + args => [ abs_path($filename), $cmd, qw/%n %g %w %b %G %W %B %R %%n %x/ ], policy => $policy, ); isnt($ar, undef, "each $cmd has a defined object"); - my $exit = $ar->run; + my $exit; my $fail = $cmd eq 'FAIL' ? 1 : 0; + if ($fail) { + ($exit, undef) = $ar->run; + } else { + $exit = $ar->run; + } is($exit, $fail, "each $cmd returned $fail"); my @lines = split /\n/, do { local $/; <$fh> }; my $res = [ map [ split /\|/, $_ ], @lines ]; @@ -116,8 +129,9 @@ sub try { SKIP: { skip 'didn\'t visited that repo' => 10 unless defined $r; + s/[\r\n]*$// for @$r; is($r->[$_], $e->[$_], "each $cmd argument $_ for repository $i is ok") - for 0 .. 9; + for 0 .. 10; } } }