about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Git.pm8
-rw-r--r--t/git.t15
2 files changed, 19 insertions, 4 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index c6c1c802..9207962b 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -362,8 +362,7 @@ sub popen {
 
 # same args as popen above
 sub qx {
-        my $self = shift;
-        my $fh = $self->popen(@_);
+        my $fh = popen(@_);
         if (wantarray) {
                 local $/ = "\n";
                 my @ret = <$fh>;
@@ -377,6 +376,11 @@ sub qx {
         }
 }
 
+sub date_parse {
+        my $d = $_[0]->qx('rev-parse', "--since=$_[1]");
+        substr($d, length('--max-age='), -1)
+}
+
 # check_async and cat_async may trigger the other, so ensure they're
 # both completely done by using this:
 sub async_wait_all ($) {
diff --git a/t/git.t b/t/git.t
index 0c85e492..7b950d88 100644
--- a/t/git.t
+++ b/t/git.t
@@ -1,12 +1,11 @@
 # Copyright (C) 2015-2021 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
-use warnings;
 use Test::More;
 use PublicInbox::TestCommon;
 my ($dir, $for_destroy) = tmpdir();
-use PublicInbox::Spawn qw(popen_rd);
 use PublicInbox::Import;
+use POSIX qw(strftime);
 
 use_ok 'PublicInbox::Git';
 
@@ -19,6 +18,18 @@ use_ok 'PublicInbox::Git';
         xsys([qw(git fast-import --quiet)], { GIT_DIR => $dir }, $rdr);
         is($?, 0, 'fast-import succeeded');
 }
+{
+        my $git = PublicInbox::Git->new($dir);
+        my $s = $git->date_parse('1970-01-01T00:00:00Z');
+        is($s, 0, 'parsed epoch');
+        local $ENV{TZ} = 'UTC';
+        $s = $git->date_parse('1993-10-02 01:02:09');
+        is(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime($s)), '1993-10-02T01:02:09Z',
+                'round trips');
+        $s = $git->date_parse('1993-10-02');
+        is(strftime('%Y-%m-%d', gmtime($s)), '1993-10-02',
+                'round trips date-only');
+}
 
 {
         my $gcf = PublicInbox::Git->new($dir);