about summary refs log tree commit
path: root/t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-01-01 03:28:22 +0000
committerEric Wong <e@80x24.org>2020-01-01 03:49:32 +0000
commit57c2bb80e2f94dfcbf08532f72c7ed568ceef7be (patch)
treee692347dba58a27b23c0d8f64ad80e51f46e3a75 /t
parent39f2513042482162c8bb855c67b3806786e3516e (diff)
downloadpublic-inbox-57c2bb80e2f94dfcbf08532f72c7ed568ceef7be.tar.gz
Time::Local has the concept of a "rolling century" which is
defined at 50 years on either side of the current year.  Since
it's now 2020 and >50 years since the Unix epoch, the year "70"
gets interpreted by Time::Local as 2070-01-01 instead of
1970-01-01.

Since NNTP servers are unlikely to store messages from the
future, we'll feed 4-digit year to Time::Local::{timegm,timelocal}
and hopefully not have to worry about things until Y10K.

This fixes test failures on t/v2writable.t and t/nntpd.t since
2020-01-01.
Diffstat (limited to 't')
-rw-r--r--t/nntp.t18
1 files changed, 11 insertions, 7 deletions
diff --git a/t/nntp.t b/t/nntp.t
index 11a175bb..961b3d6a 100644
--- a/t/nntp.t
+++ b/t/nntp.t
@@ -69,11 +69,9 @@ use_ok 'PublicInbox::Inbox';
                 my $m = join(' ', @_);
                 my $ts = PublicInbox::NNTP::parse_time(@_);
                 my @t = gmtime($ts);
-                my ($d, $t);
-                if (length($date) == 8) {
-                        ($d, $t) = split(' ', strftime('%Y%m%d %H%M%S', @t));
-                } else {
-                        ($d, $t) = split(' ', strftime('%g%m%d %H%M%S', @t));
+                my ($d, $t) = split(' ', strftime('%Y%m%d %H%M%S', @t));
+                if (length($date) != 8) { # Net::NNTP uses YYMMDD :<
+                        $d =~ s/^[0-9]{2}//;
                 }
                 is_deeply([$d, $t], [$date, $time], "roundtripped: $m");
                 $ts;
@@ -81,13 +79,19 @@ use_ok 'PublicInbox::Inbox';
         my $x1 = time_roundtrip(qw(20141109 060606 GMT));
         my $x2 = time_roundtrip(qw(141109 060606 GMT));
         my $x3 = time_roundtrip(qw(930724 060606 GMT));
-
+        my $x5 = time_roundtrip(qw(710101 000000));
+        my $x6 = time_roundtrip(qw(720101 000000));
         SKIP: {
-                skip('YYMMDD test needs updating', 2) if (time > 0x7fffffff);
+                skip('YYMMDD test needs updating', 6) if (time > 0x7fffffff);
                 # our world probably ends in 2038, but if not we'll try to
                 # remember to update the test then
                 is($x1, $x2, 'YYYYMMDD and YYMMDD parse identically');
                 is(strftime('%Y', gmtime($x3)), '1993', '930724 was in 1993');
+
+                my $epoch = time_roundtrip(qw(700101 000000 GMT));
+                is($epoch, 0, 'epoch parsed correctly');
+                ok($x6 > $x5, '1972 > 1971');
+                ok($x5 > $epoch, '1971 > Unix epoch');
         }
 }