use Action::Retry qw(retry); use strict; use warnings; use Test::Most; use Test::Pretty; { my $var = 0; my $action = Action::Retry->new( attempt_code => sub { my ($val) = @_; $var++; die "plop\n" if $var < 5; return $var + $val; }, retry_if_code => sub { my ($error, $h) = @_; chomp $error; if ($var < 5) { is $error, "plop"; return 1; } else { ok ! $error; is $h->{attempt_result}, $var + $h->{attempt_parameters}[0]; return 0; } }, strategy => { Fibonacci => { initial_term_index => 0, multiplicator => 10 } }, ); my $result = $action->run(2); is($result, 7); } { my $var = 0; my $action = Action::Retry->new( attempt_code => sub { my ($val) = @_; $var++; die "plop" if $var < 5; return ( $var + $val, "plop"); }, strategy => { Fibonacci => { initial_term_index => 0, multiplicator => 10 } }, ); my @result = $action->run(2); is_deeply(\@result, [ 7, "plop" ]); } done_testing;