X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fgit.t;h=8224969d0661fb7d6707a39ae779613ca38cf5b1;hb=d7fda3f4b9d4c9e6d01c818f09905d6827fa693f;hp=d4694f44c2d98393458a856c7b7dabe502c9acdf;hpb=3c313f9034aac96182e2efdc2f92c40803626f32;p=public-inbox.git diff --git a/t/git.t b/t/git.t index d4694f44..8224969d 100644 --- a/t/git.t +++ b/t/git.t @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2019 all contributors +# Copyright (C) 2015-2020 all contributors # License: AGPL-3.0+ use strict; use warnings; @@ -33,6 +33,27 @@ use_ok 'PublicInbox::Git'; is(${$gcf->cat_file($f)}, $$raw, 'not broken after failures'); is(${$gcf->cat_file($f)}, $$raw, 'not broken after partial read'); + + my $oid = $x[0]; + my $arg = { 'foo' => 'bar' }; + my $res = []; + my $missing = []; + $gcf->cat_async_begin; + $gcf->cat_async($oid, sub { + my ($bref, $oid_hex, $type, $size, $arg) = @_; + $res = [ @_ ]; + }, $arg); + $gcf->cat_async('non-existent', sub { + my ($bref, $oid_hex, $type, $size, $arg) = @_; + $missing = [ @_ ]; + }, $arg); + $gcf->cat_async_wait; + my ($bref, $oid_hex, $type, $size, $arg_res) = @$res; + is_deeply([$oid_hex, $type, $size], \@x, 'got expected header'); + is($arg_res, $arg, 'arg passed to cat_async'); + is_deeply($raw, $bref, 'blob result matches'); + is_deeply($missing, [ undef, undef, undef, undef, $arg], + 'non-existent blob gives expected result'); } if (1) { @@ -71,7 +92,7 @@ if ('alternates reloaded') { my @cmd = ('git', "--git-dir=$alt", qw(hash-object -w --stdin)); is(system(qw(git init -q --bare), $alt), 0, 'create alt directory'); open my $fh, '<', "$alt/config" or die "open failed: $!\n"; - my $rd = popen_rd(\@cmd, {}, { 0 => fileno($fh) } ); + my $rd = popen_rd(\@cmd, {}, { 0 => $fh } ); close $fh or die "close failed: $!"; chomp(my $remote = <$rd>); my $gcf = PublicInbox::Git->new($dir);