From 01af7ca10ae9a33248f18be92e3251d08b94d7fb Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 22 Sep 2015 10:09:43 +0000 Subject: nntp: support YYYYMMDD dates for commands RFC 3977 supports YYYYMMDD dates while retaining backwards compatibility for old YYMMDD dates. --- t/nntp.t | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 't') 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(); -- cgit v1.2.3-24-ge0c7