114 lines
3.6 KiB
Diff
114 lines
3.6 KiB
Diff
From 381d51822fccaa333cbd0ab9fca8b69f650c05f9 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
|
Date: Fri, 14 Feb 2020 14:10:10 +0100
|
|
Subject: [PATCH] Only pass 2-digit years to tests when testing 2-digit year
|
|
handling
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
This will start breaking in 2020 if done without working around the whole
|
|
breakpoint thing. See https://rt.cpan.org/Ticket/Display.html?id=124787.
|
|
|
|
Ported from Time-Local 63265fd81c7f6177bf28dfe0d1ada9cb897de566 commit
|
|
by Dave Rolsky <autarch@urth.org> to perl 5.28.2.
|
|
|
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
---
|
|
cpan/Time-Local/t/Local.t | 40 +++++++++++++++++++++++++++++----------
|
|
1 file changed, 30 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/cpan/Time-Local/t/Local.t b/cpan/Time-Local/t/Local.t
|
|
index 6341396..701d22d 100644
|
|
--- a/cpan/Time-Local/t/Local.t
|
|
+++ b/cpan/Time-Local/t/Local.t
|
|
@@ -85,19 +85,17 @@ my $epoch_is_64
|
|
|
|
for ( @time, @neg_time ) {
|
|
my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_;
|
|
- $year -= 1900;
|
|
$mon--;
|
|
|
|
SKIP: {
|
|
skip '1970 test on VOS fails.', 12
|
|
- if $^O eq 'vos' && $year == 70;
|
|
+ if $^O eq 'vos' && $year == 1970;
|
|
skip 'this platform does not support negative epochs.', 12
|
|
- if $year < 70 && !$neg_epoch_ok;
|
|
+ if $year < 1970 && !$neg_epoch_ok;
|
|
|
|
# Test timelocal()
|
|
{
|
|
- my $year_in = $year < 70 ? $year + 1900 : $year;
|
|
- my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year_in );
|
|
+ my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year );
|
|
|
|
my ( $s, $m, $h, $D, $M, $Y ) = localtime($time);
|
|
|
|
@@ -106,13 +104,12 @@ SKIP: {
|
|
is( $h, $hour, "timelocal hour for @$_" );
|
|
is( $D, $mday, "timelocal day for @$_" );
|
|
is( $M, $mon, "timelocal month for @$_" );
|
|
- is( $Y, $year, "timelocal year for @$_" );
|
|
+ is( $Y, $year - 1900, "timelocal year for @$_" );
|
|
}
|
|
|
|
# Test timegm()
|
|
{
|
|
- my $year_in = $year < 70 ? $year + 1900 : $year;
|
|
- my $time = timegm( $sec, $min, $hour, $mday, $mon, $year_in );
|
|
+ my $time = timegm( $sec, $min, $hour, $mday, $mon, $year );
|
|
|
|
my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time);
|
|
|
|
@@ -121,14 +118,13 @@ SKIP: {
|
|
is( $h, $hour, "timegm hour for @$_" );
|
|
is( $D, $mday, "timegm day for @$_" );
|
|
is( $M, $mon, "timegm month for @$_" );
|
|
- is( $Y, $year, "timegm year for @$_" );
|
|
+ is( $Y, $year - 1900, "timegm year for @$_" );
|
|
}
|
|
}
|
|
}
|
|
|
|
for (@bad_time) {
|
|
my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_;
|
|
- $year -= 1900;
|
|
$mon--;
|
|
|
|
eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) };
|
|
@@ -229,6 +225,30 @@ SKIP:
|
|
);
|
|
}
|
|
|
|
+# 2-digit years
|
|
+{
|
|
+ my $current_year = ( localtime() )[5];
|
|
+ my $pre_break = ( $current_year + 49 ) - 100;
|
|
+ my $break = ( $current_year + 50 ) - 100;
|
|
+ my $post_break = ( $current_year + 51 ) - 100;
|
|
+
|
|
+ is(
|
|
+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $pre_break ) ) )[5] ),
|
|
+ $pre_break + 100,
|
|
+ "year $pre_break is treated as next century",
|
|
+ );
|
|
+ is(
|
|
+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] ),
|
|
+ $break + 100,
|
|
+ "year $break is treated as next century",
|
|
+ );
|
|
+ is(
|
|
+ ( ( localtime( timelocal( 0, 0, 0, 1, 1, $post_break ) ) )[5] ),
|
|
+ $post_break,
|
|
+ "year $post_break is treated as current century",
|
|
+ );
|
|
+}
|
|
+
|
|
SKIP:
|
|
{
|
|
skip 'These tests only run for the package maintainer.', 8
|
|
--
|
|
2.21.1
|
|
|