From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id DD1A91F4C0 for ; Mon, 4 Nov 2019 03:01:37 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/5] t/*.t: remove IPC::Run dependency for git commands Date: Mon, 4 Nov 2019 03:01:33 +0000 Message-Id: <20191104030137.4301-2-e@80x24.org> In-Reply-To: <20191104030137.4301-1-e@80x24.org> References: <20191104030137.4301-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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 | 12 ++++++------ t/www_listing.t | 11 ++++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/t/git.t b/t/git.t index 445ef248..a496f851 100644 --- 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; diff --git a/t/www_listing.t b/t/www_listing.t index 9f71257d..3d1b64ad 100644 --- a/t/www_listing.t +++ b/t/www_listing.t @@ -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');