@@ -87,8 +87,9 @@ sub wait_until (&%) {
my $exception = '';
while ($timeout_not_elapsed->()) {
+ my $assert_ret;
my $try_ret = try {
- my $assert_ret = $assert->();
+ $assert_ret = $assert->();
return $assert_ret if $assert_ret;
}
catch {
@@ -97,7 +98,9 @@ sub wait_until (&%) {
return '';
finally {
- sleep($args->{interval});
+ if (! $assert_ret) {
+ sleep($args->{interval});
+ }
};
return $try_ret if $try_ret;
@@ -34,6 +34,12 @@ EXCEPTIONS: {
'exceptions usually only warn once';
+NO_FINALLY_WAIT: {
+ waits_ok( sub { wait_until { 1 }, interval => 10 }, '<', 1,
+ 'does not do interval wait on success')
+
+}
sub waits_ok {
my ($sub, $cmp, $expected_duration, $test_desc) = @_;