about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-09-22 10:09:43 +0000
committerEric Wong <e@80x24.org>2015-09-22 22:12:16 +0000
commit01af7ca10ae9a33248f18be92e3251d08b94d7fb (patch)
treea877b74f6ad75b2aff7afec43d9d2b52d278b4e4 /t
parent0b87f63548f524365a7e1c39635fdb05bfb3fb42 (diff)
downloadpublic-inbox-01af7ca10ae9a33248f18be92e3251d08b94d7fb.tar.gz
RFC 3977 supports YYYYMMDD dates while retaining backwards
compatibility for old YYMMDD dates.
Diffstat (limited to 't')
-rw-r--r--t/nntp.t29
1 files changed, 29 insertions, 0 deletions
diff --git a/t/nntp.t b/t/nntp.t
index 82918ff5..c9178882 100644
--- a/t/nntp.t
+++ b/t/nntp.t
@@ -61,4 +61,33 @@ use_ok 'PublicInbox::NNTP';
         ngpat_like('a.s.r', 'a.t,a.s.*');
 }
 
+{
+        use POSIX qw(strftime);
+        sub time_roundtrip {
+                my ($date, $time, $gmt) = @_;
+                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));
+                }
+                is_deeply([$d, $t], [$date, $time], "roundtripped: $m");
+                $ts;
+        }
+        my $x1 = time_roundtrip(qw(20141109 060606 GMT));
+        my $x2 = time_roundtrip(qw(141109 060606 GMT));
+        my $x3 = time_roundtrip(qw(930724 060606 GMT));
+
+        SKIP: {
+                skip('YYMMDD test needs updating', 2) 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');
+        }
+}
+
 done_testing();