diff options
author | Eric Wong <e@80x24.org> | 2015-12-31 21:16:39 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-04-05 18:58:27 +0000 |
commit | e82a365d610f4939767c219fd3d642915cd1826c (patch) | |
tree | 8f76588b6f5eb3b19e6cc0e7c42c738ac00ba7d2 | |
parent | 4d3ea41416450e69c157f11e2e9057bc764c1e96 (diff) | |
download | public-inbox-e82a365d610f4939767c219fd3d642915cd1826c.tar.gz |
This lets us one-line git commands easily like ``, but without having to remember --git-dir or escape arguments.
-rw-r--r-- | lib/PublicInbox/Git.pm | 8 | ||||
-rw-r--r-- | t/git.t | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index a7e50925..ac556426 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -131,6 +131,14 @@ sub popen { popen_rd(\@cmd); } +sub qx { + my ($self, @cmd) = @_; + my $fh = $self->popen(@cmd); + return <$fh> if wantarray; + local $/; + <$fh> +} + sub cleanup { my ($self) = @_; _destroy($self, qw(in out pid)); @@ -129,6 +129,14 @@ if (1) { local $/; is($all, <$fh>, 'entire read matches'); }; + + my $ref = $gcf->qx(qw(cat-file blob), $buf); + is($all, $ref, 'qx read giant single string'); + + my @ref = $gcf->qx(qw(cat-file blob), $buf); + is($all, join('', @ref), 'qx returned array when wanted'); + my $nl = scalar @ref; + ok($nl > 1, "qx returned array length of $nl"); } done_testing(); |