[pve-devel] applied: [PATCH common 3/3] tests: update to utc flag and add daylight savings test
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Oct 31 15:11:16 CET 2018
Am 10/31/2018 um 10:54 AM schrieb Wolfgang Bumiller:
> Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> ---
> test/calendar_event_test.pl | 35 +++++++++++++++++++++++++++++++++--
> 1 file changed, 33 insertions(+), 2 deletions(-)
>
> diff --git a/test/calendar_event_test.pl b/test/calendar_event_test.pl
> index 0defafa..abbd74c 100755
> --- a/test/calendar_event_test.pl
> +++ b/test/calendar_event_test.pl
> @@ -3,12 +3,17 @@
> use lib '../src';
> use strict;
> use warnings;
> +use POSIX ();
> use Data::Dumper;
> use Time::Local;
> use Test::More;
>
> use PVE::CalendarEvent;
>
> +# Time tests should run in a controlled setting
> +$ENV{TZ} = 'UTC';
> +POSIX::tzset();
> +
> my $alldays = [0,1,2,3,4,5,6];
> my $tests = [
> [
> @@ -183,6 +188,7 @@ foreach my $test (@$tests) {
> my $timespec;
> eval { $timespec = PVE::CalendarEvent::parse_calendar_event($t); };
> my $err = $@;
> + delete $timespec->{utc};
>
> if ($expect->{error}) {
> chomp $err if $err;
> @@ -197,11 +203,36 @@ foreach my $test (@$tests) {
>
> foreach my $nt (@$nextsync) {
> my ($last, $expect_next) = @$nt;
> -
> my $msg = "next event '$t' $last => ${expect_next}";
> - my $next = PVE::CalendarEvent::compute_next_event($timespec, $last, 1);
> + $timespec->{utc} = 1;
> + my $next = PVE::CalendarEvent::compute_next_event($timespec, $last);
> is($next, $expect_next, $msg);
> }
> };
>
> +sub tztest {
> + my ($calspec, $last) = @_;
> + my $spec = PVE::CalendarEvent::parse_calendar_event($calspec);
> + return PVE::CalendarEvent::compute_next_event($spec, $last);
> +}
> +
> +# Test loop termination at CEST/CET switch (cannot happen here in UTC)
> +is(tztest('mon..fri', timelocal(0, 0, 0, 28, 9, 2018)),
> + timelocal(0, 0, 0, 29, 9, 2018));
> +is(tztest('mon..fri UTC', timelocal(0, 0, 0, 28, 9, 2018)),
> + timelocal(0, 0, 0, 29, 9, 2018));
> +
> +# Now in the affected time zone
> +$ENV{TZ} = ':Europe/Vienna';
> +POSIX::tzset();
> +is(tztest('mon..fri', timelocal(0, 0, 0, 28, 9, 2018)),
> + timelocal(0, 0, 0, 29, 9, 2018));
> +# Specifically requesting UTC in the calendar spec means the resulting output
> +# time as seen locally (timelocal() as opposed to timegm()) is shifted by 1
> +# hour.
> +is(tztest('mon..fri UTC', timelocal(0, 0, 0, 28, 9, 2018)),
> + timelocal(0, 0, 1, 29, 9, 2018));
> +$ENV{TZ} = 'UTC';
> +POSIX::tzset();
> +
> done_testing();
>
applied, thanks!
More information about the pve-devel
mailing list