mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-25 03:44:52 +00:00
Cron.pm: wip
git-svn-id: https://svn.fhem.de/fhem/trunk@27877 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
fa12dbe643
commit
d97a3732c8
@ -1,31 +1,30 @@
|
||||
# perl fhem.pl -t t/FHEM/90_Cron/10_Cronlib.t
|
||||
use v5.14;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use FHEM::Scheduler::Cron;
|
||||
|
||||
$ENV{EXTENDED_DEBUG} = 1;
|
||||
$ENV{EXTENDED_DEBUG} = 0;
|
||||
|
||||
# syntax of list
|
||||
# description of test | cron expr | from | next, (more next.., ..) | err expected (regex) |
|
||||
# description of test | cron expr | err expected (regex) | from | next (more next.., ..)
|
||||
|
||||
my $test = [
|
||||
#['must throw an error if no cron text given', '', 0, 0, qr(no cron expression)],
|
||||
#['must throw an error if cron expression exceeds 255 chars', q(0) x 256, 0, 0, qr(cron expression exceeds limit)],
|
||||
|
||||
# [q(accept '$cron_text'), '* * * * *', 0, 0, qr(^$)],
|
||||
['must throw an error if no cron text given', '', qr(no cron expression), 20230101000000 ],
|
||||
['must throw an error if cron expression exceeds 255 chars', q(0) x 256, qr(cron expression exceeds limit), 20230101000000 ],
|
||||
[q(accept '$cron_text'), '* * * * *', qr(^$), 20230101000000, 20230101000100 ],
|
||||
# [q(precedence mday '$cron_text'), '* * 1 * *', 0, 0, qr(^$)],
|
||||
# [q(precedence wday '$cron_text'), '* * * * 2', 0, 0, qr(^$)],
|
||||
# [q(mday OR wday logic '$cron_text'), '* * 1 * 2', 0, 0, qr(^$)],
|
||||
[q(mday AND wday logic '$cron_text'), '5/5 10 * * *', 20230101120000, 20230101000000, qr(^$)],
|
||||
# [q(mday AND wday logic '$cron_text'), '5/5 10 * * *', 20230101105500, 20230102100500, 20230102101000, 20230102101500, qr(^$)],
|
||||
# [q(RULE4 logic '$cron_text'), '* * * * 1,&2', 0, 0, qr(^$)],
|
||||
# [q(validate date '$cron_text'), '* * 30 2 *', 0, 0, qr(^$)],
|
||||
];
|
||||
|
||||
# # positive tests for minute
|
||||
# [q(accept '$cron_text'), '* * * * *', 0, 0, qr(^$)],
|
||||
# [q(accept '$cron_text'), '1 * * * *', 0, 0, qr(^$)],
|
||||
[q(accept '$cron_text'), '* * * * *', qr(^$), 20230101000000, 20230101000100],
|
||||
[q(accept '$cron_text'), '1 * * * *', qr(^$), 20230101000000, 20230101000100],
|
||||
# [q(accept '$cron_text'), '1-5 * * * *', 0, 0, qr(^$)],
|
||||
# [q(accept '$cron_text'), '1-5/1 * * * *', 0, 0, qr(^$)],
|
||||
# [q(accept '$cron_text'), '*/1 * * * *', 0, 0, qr(^$)],
|
||||
@ -52,7 +51,7 @@ my $test = [
|
||||
# [q(must throw an error '$cron_text'), '0-59/60 * * * *', 0, 0, qr(^syntax error in minute item:)],
|
||||
# [q(must throw an error '$cron_text'), '20~10 * * * *', 0, 0, qr(^syntax error in minute item:)],
|
||||
# # negative tests for minute / value range
|
||||
# ];
|
||||
];
|
||||
|
||||
# print join ",", (20200101120000 .. 20200101120010 ), (20200101120100 .. 20200101120110 );
|
||||
# print "\n";
|
||||
@ -61,24 +60,19 @@ my $test = [
|
||||
# ok($cron_lib_loadable, "FHEM::Scheduler::Cron loaded");
|
||||
|
||||
foreach my $test (@$test) {
|
||||
my ($desc, $cron_text, $from, $next, $err_expected) = @$test;
|
||||
# print "$desc, $cron_text, $from, $next, $err_expected \n";
|
||||
my $cron_obj = FHEM::Scheduler::Cron->new($cron_text);
|
||||
my $err = $cron_obj->{error} // '';
|
||||
|
||||
my ($desc, $cron_text, $err_expected, @series) = @$test;
|
||||
my ($cron_obj, $err) = FHEM::Scheduler::Cron->new($cron_text);
|
||||
my $ok = 1;
|
||||
my @r = split(',', $next);
|
||||
for my $iter (0 .. $#r) {
|
||||
next unless ($r[$iter]);
|
||||
# next;
|
||||
print "iteration $iter $#r ";
|
||||
print "$r[$iter]\n";
|
||||
$cron_obj->next($r[$iter]);
|
||||
#print "\n";
|
||||
|
||||
for my $iter (0 .. $#series -1) {
|
||||
# next unless ($series[$iter]);
|
||||
my $got = $cron_obj->next($series[$iter]);
|
||||
$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};
|
||||
}
|
||||
$ok &&= ($err =~ /$err_expected/);
|
||||
$ok &&= ($err // '' =~ /$err_expected/);
|
||||
ok($ok, sprintf('%s %s', eval qq{"$desc"} , $err?"(got '$err')":''));
|
||||
}
|
||||
};
|
||||
|
||||
done_testing;
|
||||
exit(0);
|
||||
|
0
fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.cfg
Normal file
0
fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.cfg
Normal file
35
fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t
Normal file
35
fhem/t/FHEM/90_Cron/99_Cronlib_DEBUG.t
Normal file
@ -0,0 +1,35 @@
|
||||
# perl fhem.pl -t t/FHEM/90_Cron/99_Cronlib_DEBUG.t
|
||||
use v5.14;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use FHEM::Scheduler::Cron;
|
||||
|
||||
$ENV{EXTENDED_DEBUG} = 1;
|
||||
|
||||
# syntax of list
|
||||
# description of test | cron expr | err expected (regex) | from | next (more next.., ..)
|
||||
|
||||
my $test = [
|
||||
#[q(Timeseries '$cron_text'), '0 12 3,4,5 2 0,2,3,4', qr(^$), 20230102150000, 20230201120000, 20230202120000, 20230203120000, 20230204120000],
|
||||
[q(Timeseries '$cron_text'), '0 12 29 2 &7', qr(^$), 20230102150000, 20320229120000],
|
||||
];
|
||||
|
||||
foreach my $test (@$test) {
|
||||
my ($desc, $cron_text, $err_expected, @series) = @$test;
|
||||
my ($cron_obj, $err) = FHEM::Scheduler::Cron->new($cron_text);
|
||||
my $ok = 1;
|
||||
|
||||
for my $iter (0 .. $#series -1) {
|
||||
# next unless ($series[$iter]);
|
||||
my $got = $cron_obj->next($series[$iter]);
|
||||
$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};
|
||||
}
|
||||
$ok &&= ($err // '' =~ /$err_expected/);
|
||||
ok($ok, sprintf('%s %s', eval qq{"$desc"} , $err?"(got '$err')":''));
|
||||
};
|
||||
|
||||
done_testing;
|
||||
exit(0);
|
Loading…
x
Reference in New Issue
Block a user