From: Eric Wong <e@80x24.org>
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 [thread overview]
Message-ID: <20191104030137.4301-2-e@80x24.org> (raw)
In-Reply-To: <20191104030137.4301-1-e@80x24.org>
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');
next prev parent reply other threads:[~2019-11-04 3:01 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-04 3:01 [PATCH 0/5] tiny test overhead reductions Eric Wong
2019-11-04 3:01 ` Eric Wong [this message]
2019-11-04 3:01 ` [PATCH 2/5] t/httpd-corner.t: drop unnecessary bytes:: for length() Eric Wong
2019-11-04 3:01 ` [PATCH 3/5] t/httpd-corner.t: get rid of IPC::Run for running curl Eric Wong
2019-11-04 3:01 ` [PATCH 4/5] t/hl_mod.t: remove IPC::Run (and File::Temp) dependency Eric Wong
2019-11-04 3:01 ` [PATCH 5/5] t/*.t: disable nntpd/httpd worker processes in most tests Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191104030137.4301-2-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).