]> Sergey Matveev's repositories - public-inbox.git/commitdiff
t/*.t: remove IPC::Run dependency for git commands
authorEric Wong <e@80x24.org>
Mon, 4 Nov 2019 03:01:33 +0000 (03:01 +0000)
committerEric Wong <e@80x24.org>
Fri, 8 Nov 2019 20:21:45 +0000 (20:21 +0000)
One small step towards making tests easier-to-run.  We can rely
on "local $ENV{GIT_DIR}" for potentially shell-unsafe path
names, and the rest of our path names are relative and don't
contain characters which require escaping.

t/git.t
t/www_listing.t

diff --git a/t/git.t b/t/git.t
index 445ef248d71309d4d345ce4c78ce8492d67b8880..a496f851c3219033ff5524b9163d6d49f033cfb3 100644 (file)
--- a/t/git.t
+++ b/t/git.t
@@ -7,16 +7,14 @@ use File::Temp qw/tempdir/;
 my $dir = tempdir('pi-git-XXXXXX', TMPDIR => 1, CLEANUP => 1);
 use PublicInbox::Spawn qw(popen_rd);
 
-eval { require IPC::Run } or plan skip_all => 'IPC::Run missing';
 use_ok 'PublicInbox::Git';
 
 {
        is(system(qw(git init -q --bare), $dir), 0, 'created git directory');
-       my $cmd = [ 'git', "--git-dir=$dir", 'fast-import', '--quiet' ];
-
        my $fi_data = './t/git.fast-import-data';
        ok(-r $fi_data, "fast-import data readable (or run test at top level)");
-       IPC::Run::run($cmd, '<', $fi_data);
+       local $ENV{GIT_DIR} = $dir;
+       system("git fast-import --quiet <$fi_data");
        is($?, 0, 'fast-import succeeded');
 }
 
@@ -46,8 +44,10 @@ if (1) {
        my $size = -s $big_data;
        ok($size > 8192, 'file is big enough');
 
-       my $buf = '';
-       IPC::Run::run($cmd, '<', $big_data, '>', \$buf);
+       my $buf = do {
+               local $ENV{GIT_DIR} = $dir;
+               `git hash-object -w --stdin <$big_data`;
+       };
        is(0, $?, 'hashed object successfully');
        chomp $buf;
 
index 9f71257d1361facc58f8f21cf598783767abfc71..3d1b64ad4beea427592dfe29c5df5eb5ec622122 100644 (file)
@@ -7,7 +7,7 @@ use Test::More;
 use PublicInbox::Spawn qw(which);
 use File::Temp qw/tempdir/;
 require './t/common.perl';
-my @mods = qw(URI::Escape Plack::Builder IPC::Run Digest::SHA
+my @mods = qw(URI::Escape Plack::Builder Digest::SHA
                IO::Compress::Gzip IO::Uncompress::Gunzip HTTP::Tiny);
 foreach my $mod (@mods) {
        eval("require $mod") or plan skip_all => "$mod missing for $0";
@@ -19,15 +19,16 @@ plan skip_all => "JSON module missing: $@" if $@;
 
 use_ok 'PublicInbox::Git';
 
-my $fi_data = './t/git.fast-import-data';
 my $tmpdir = tempdir('www_listing-tmp-XXXXXX', TMPDIR => 1, CLEANUP => 1);
 my $bare = PublicInbox::Git->new("$tmpdir/bare.git");
 is(system(qw(git init -q --bare), $bare->{git_dir}), 0, 'git init --bare');
 is(PublicInbox::WwwListing::fingerprint($bare), undef,
        'empty repo has no fingerprint');
-
-my $cmd = [ 'git', "--git-dir=$bare->{git_dir}", qw(fast-import --quiet) ];
-ok(IPC::Run::run($cmd, '<', $fi_data), 'fast-import');
+{
+       my $fi_data = './t/git.fast-import-data';
+       local $ENV{GIT_DIR} = $bare->{git_dir};
+       is(system("git fast-import --quiet <$fi_data"), 0, 'fast-import');
+}
 
 like(PublicInbox::WwwListing::fingerprint($bare), qr/\A[a-f0-9]{40}\z/,
        'got fingerprint with non-empty repo');