From: Rafael Garcia-Suarez Date: Wed, 24 Jan 2007 11:02:24 +0000 (+0000) Subject: Upgrade to Time::Local 1.16 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=99ffb1cb9ad68572b442d79446caa8bcbb2964fc;p=p5sagit%2Fp5-mst-13.2.git Upgrade to Time::Local 1.16 p4raw-id: //depot/perl@29940 --- diff --git a/lib/Time/Local.pm b/lib/Time/Local.pm index f5bb4bb..d80d6c8 100644 --- a/lib/Time/Local.pm +++ b/lib/Time/Local.pm @@ -7,7 +7,7 @@ use strict; use integer; use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK ); -$VERSION = '1.15'; +$VERSION = '1.16'; @ISA = qw( Exporter ); @EXPORT = qw( timegm timelocal ); @@ -91,9 +91,6 @@ sub _timegm { sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; - # Need to check leap year before altering the value - my $leap_year = _is_leap_year($year); - if ( $year >= 1000 ) { $year -= 1900; } @@ -114,7 +111,7 @@ sub timegm { my $md = $MonthDays[$month]; ++$md - if $month == 1 && $leap_year; + if $month == 1 && _is_leap_year( $year + 1900 ); croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1; croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0; diff --git a/lib/Time/Local.t b/lib/Time/Local.t index 4ae7392..bba6796 100755 --- a/lib/Time/Local.t +++ b/lib/Time/Local.t @@ -77,7 +77,7 @@ my $tests = (@time * 12); $tests += @neg_time * 12; $tests += @bad_time; $tests += @years; -$tests += 5; +$tests += 10; $tests += 2 if $ENV{PERL_CORE}; $tests += 8 if $ENV{MAINTAINER}; @@ -171,8 +171,25 @@ SKIP: skip 'this platform does not support negative epochs.', 1 unless $neg_epoch_ok; + eval { timegm(0,0,0,29,1,1900) }; + like($@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 1900'); + + eval { timegm(0,0,0,29,1,200) }; + like($@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 2100 (year passed as 200)'); + + eval { timegm(0,0,0,29,1,0) }; + is($@, '', 'no error with leap day of 2000 (year passed as 0)'); + eval { timegm(0,0,0,29,1,1904) }; is($@, '', 'no error with leap day of 1904'); + + eval { timegm(0,0,0,29,1,4) }; + is($@, '', 'no error with leap day of 2004 (year passed as 4)'); + + eval { timegm(0,0,0,29,1,96) }; + is($@, '', 'no error with leap day of 1996 (year passed as 96)'); } if ($ENV{MAINTAINER}) {