summaryrefslogtreecommitdiff
path: root/lib/Time
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-01-24 11:02:24 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-01-24 11:02:24 +0000
commit99ffb1cb9ad68572b442d79446caa8bcbb2964fc (patch)
tree9310ccfea3e650f85b192cc81419999d341a1a60 /lib/Time
parent28e491ba9090286e45cbf77736b31eecb771fe4e (diff)
downloadperl-99ffb1cb9ad68572b442d79446caa8bcbb2964fc.tar.gz
Upgrade to Time::Local 1.16
p4raw-id: //depot/perl@29940
Diffstat (limited to 'lib/Time')
-rw-r--r--lib/Time/Local.pm7
-rwxr-xr-xlib/Time/Local.t19
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/Time/Local.pm b/lib/Time/Local.pm
index f5bb4bb3aa..d80d6c8e2a 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 4ae739227b..bba67963fc 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}) {