From e919bcc4532c30536f3133ac3414c985b8619e18 Mon Sep 17 00:00:00 2001 From: herrmannj <> Date: Wed, 23 Aug 2023 19:23:13 +0000 Subject: [PATCH] Cron.pm: wip git-svn-id: https://svn.fhem.de/fhem/trunk@27884 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/t/FHEM/90_Cron/10_Cronlib.t | 20 ++++++++++++-------- fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t | 20 ++++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/fhem/t/FHEM/90_Cron/10_Cronlib.t b/fhem/t/FHEM/90_Cron/10_Cronlib.t index ff45b925d..957e1d779 100644 --- a/fhem/t/FHEM/90_Cron/10_Cronlib.t +++ b/fhem/t/FHEM/90_Cron/10_Cronlib.t @@ -60,7 +60,8 @@ my $test = [ [q(handle '$cron_text'), '0 0 * * 1-5/2', qr(^$), 20230101000000, 20230102000000, 20230104000000, 20230106000000 ], [q(handle '$cron_text'), '0 0 * * 1-5,6', qr(^$), 20230101000000, 20230102000000, 20230103000000, 20230104000000, 20230105000000, 20230106000000, 20230107000000 ], [q(handle '$cron_text'), '0 0 8 * 1-5,6', qr(^$), 20230101000000, 20230102000000, 20230103000000, 20230104000000, 20230105000000, 20230106000000, 20230107000000, 20230108000000 ], - [q(handle '$cron_text'), '0 0 8 * &1-5,6', qr(^$), 20230101000000, 20230102000000, 20230103000000, 20230104000000, 20230105000000, 20230106000000, 20230107000000, 20230108000000 ], + [q(handle '$cron_text'), '0 0 2-8 * &1-5,6', qr(^$), 20230101000000, 20230102000000, 20230103000000, 20230104000000, 20230105000000, 20230106000000, 20230107000000, 20230114000000 ], + [q(handle '$cron_text'), '0 0 2-8 * 1#1', qr(^$), 20230101000000 ], # time series [q(Timeseries '$cron_text'), '0 12 3,4,5 2 0,2,3,4', qr(^$), 20230102150000, 20230201120000, 20230202120000, 20230203120000, 20230204120000], @@ -79,14 +80,17 @@ foreach my $t (@$test) { my $ok = 1; my $count = 0; - for my $iter (0 .. $#series -1) { - # next unless ($series[$iter]); - my $got = $cron_obj->next($series[$iter]); - $count++; - $ok = 0 if ($got ne $series[$iter +1]); - say sprintf('%s -> expected: %s, got: %s', ($got ne $series[$iter +1])?'not ok':'ok', $series[$iter +1], $got) if $ENV{EXTENDED_DEBUG}; + unless ($err) { + for my $iter (0 .. $#series -1) { + # next unless ($series[$iter]); + my ($got, $err) = $cron_obj->next($series[$iter]); + $count++; + $ok = 0 if ($err or (not $got) or ($got ne $series[$iter +1])); + say sprintf('%s -> expected: %s, got: %s', ($got ne $series[$iter +1])?'not ok':'ok', $series[$iter +1], $got) if $ENV{EXTENDED_DEBUG}; + last if (not $ok); + } } - $ok &&= ($err // '' =~ /$err_expected/); + $ok &&= (($err // '') =~ /$err_expected/); ok($ok, sprintf('%s %s', eval qq{"$desc"} , $err?"(got '$err')":"(# of passes: $count)")); }; diff --git a/fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t b/fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t index afa95090e..0eb80f6f9 100644 --- a/fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t +++ b/fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t @@ -14,7 +14,8 @@ $ENV{EXTENDED_DEBUG} = 1; my $test = [ #[q(Timeseries '$cron_text'), '0 12 3,4,5 2 0,2,3,4', qr(^$), 20230102150000, 20230201120000, 20230202120000, 20230203120000, 20230204120000], #[q(Feb-29 & Sunday '$cron_text'), '0 12 29 2 &7', qr(^$), 20230102150000, 20320229120000, sub {20600229120000}->()], - [q(accept '$cron_text'), '1-5 * * * *', qr(^$), sub {my @r = (20230101000000); for my $h (0..23) {for my $m (1..5) {push @r, sprintf('20230101%02d%02d00', $h, $m)}}; @r}->()], + #[q(accept '$cron_text'), '1-5 * * * *', qr(^$), sub {my @r = (20230101000000); for my $h (0..23) {for my $m (1..5) {push @r, sprintf('20230101%02d%02d00', $h, $m)}}; @r}->()], + [q(handle '$cron_text'), '0 0 2-8 * &1-5,6', qr(^$), 20230101000000, 20230102000000, 20230103000000, 20230104000000, 20230105000000, 20230106000000, 20230107000000, 20230114000000 ], ]; foreach my $t (@$test) { @@ -23,14 +24,17 @@ foreach my $t (@$test) { my $ok = 1; my $count = 0; - for my $iter (0 .. $#series -1) { - # next unless ($series[$iter]); - my $got = $cron_obj->next($series[$iter]); - $count++; - $ok = 0 if ($got ne $series[$iter +1]); - say sprintf('%s -> expected: %s, got: %s', ($got ne $series[$iter +1])?'not ok':'ok', $series[$iter +1], $got) if $ENV{EXTENDED_DEBUG}; + unless ($err) { + for my $iter (0 .. $#series -1) { + # next unless ($series[$iter]); + my ($got, $err) = $cron_obj->next($series[$iter]); + $count++; + $ok = 0 if ($err or (not $got) or ($got ne $series[$iter +1])); + say sprintf('%s -> expected: %s, got: %s', ($got ne $series[$iter +1])?'not ok':'ok', $series[$iter +1], $got) if $ENV{EXTENDED_DEBUG}; + last if (not $ok); + } } - $ok &&= ($err // '' =~ /$err_expected/); + $ok &&= (($err // '') =~ /$err_expected/); ok($ok, sprintf('%s %s', eval qq{"$desc"} , $err?"(got '$err')":"(# of passes: $count)")); };