The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use Test::More;

BEGIN {
plan skip_all => 'Needs you to manually run a git daemon';

exit 0;

    if ( $^O eq 'MSWin32' ) {
        plan skip_all => 'Windows does NOT have git-daemon yet';
    }
}
use Git::PurePerl;
use IO::File;
use Path::Class;

# git daemon --verbose --reuseaddr --export-all --base-path=/home/acme/git/git-pureperl

my $directory = 'test-protocol';
dir($directory)->rmtree;

my $git = Git::PurePerl->init( directory => $directory );
isa_ok( $git, 'Git::PurePerl', 'can init' );

$git->clone( 'localhost', '/test-project' );

is( $git->all_sha1s->all,   9 );
is( $git->all_objects->all, 9 );

$git->update_master('0c7b3d23c0f821e58cd20e60d5e63f5ed12ef391');

like( $git->master_sha1, qr/^[a-z0-9]{40}$/ );
my $commit = $git->master;

is( $commit->kind, 'commit' );
is( $commit->size, 256 );
like( $commit->sha1, qr/^[a-z0-9]{40}$/ );
is( $commit->tree_sha1, '37b4fcd62571f07408e830f455268891f95cecf5' );
like( $commit->parent_sha1, qr/^[a-z0-9]{40}$/ );
is( $commit->author->name,     'Your Name Comes Here' );
is( $commit->author->email,    'you@yourdomain.example.com' );
is( $commit->committer->name,  'Your Name Comes Here' );
is( $commit->committer->email, 'you@yourdomain.example.com' );
is( $commit->comment,          'add again' );

done_testing;