NAME¶
Test::Git - Helper functions for test scripts using Git
VERSION¶
version 1.312
SYNOPSIS¶
use Test::More;
use Test::Git;
# check there is a git binary available, or skip all
has_git();
# check there is a minimum version of git available, or skip all
has_git( '1.6.5' );
# check the git we want to test has a minimum version, or skip all
has_git( '1.6.5', { git => '/path/to/alternative/git' } );
# normal plan
plan tests => 2;
# create a new, empty repository in a temporary location
# and return a Git::Repository object
my $r = test_repository();
# clone an existing repository in a temporary location
# and return a Git::Repository object
my $c = test_repository( clone => [ $url ] );
# run some tests on the repository
...
DESCRIPTION¶
Test::Git provides a number of helpful functions when running test scripts that
require the creation and management of a Git repository.
EXPORTED FUNCTIONS¶
has_git¶
has_git( $version, \%options );
Checks if there is a git binary available, or skips all tests.
If the optional $version argument is provided, also checks if the available git
binary has a version greater or equal to $version.
This function also accepts an option hash of the same kind as those accepted by
Git::Repository and Git::Repository::Command.
This function must be called before "plan()", as it performs a
skip_all if requirements are not met.
test_repository¶
test_repository( %options );
Creates a new empty git repository in a temporary location, and returns a
Git::Repository object pointing to it.
This function takes options as a hash. Each key will influence a different part
of the creation process.
The keys are:
- temp
- Array reference containing parameters to File::Temp "tempdir"
function.
Default: "<[ CLEANUP =" 1 ]>>
- init
- Array reference containing parameters to "git init". Must not
contain the target directory parameter, which is provided by
"test_repository()" (via File::Temp).
Default: "[]"
The "init" option is only supported with Git versions higher or
equal to 1.6.2.rc0.
- clone
- Array reference containing parameters to "git clone". Must not
contain the target directory parameter, which is provided by
"test_repository()" (via File::Temp).
Note that "clone" and "init" are mutually exclusive and
that "test_repository()" will croak if both are provided. This
option has no default value, since at least a Git URL must be provided to
the "clone" option.
The "clone" option is only supported with Git versions higher or
equal to 1.6.2.rc0.
- git
- Hash reference containing options for Git::Repository.
Default: "{}"
This call is the equivalent of the default call with no options:
test_repository(
temp => [ CLEANUP => 1 ], # File::Temp::tempdir options
init => [], # git init options
git => {}, # Git::Repository options
);
To create a
bare repository:
test_repository( init => [ '--bare' ] );
To leave the repository in its location after the end of the test:
test_repository( temp => [ CLEANUP => 0 ] );
Note that since "test_repository()" uses "git init" to
create the test repository, it requires at least Git version
"1.5.0.rc1".
ACKNOWLEDGEMENTS¶
The "clone" option and capability of "test_repository()"
owes a lot to Nathan Nutter (NNUTTER), who wanted to be able to clone into a
test repository.
BUGS¶
Please report any bugs or feature requests on the bugtracker website
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Git-Repository or by email to
bug-git-repository@rt.cpan.org.
When submitting a bug or request, please include a test-file or a patch to an
existing test-file that illustrates the bug or desired feature.
AUTHOR¶
Philippe Bruhat (BooK) <book@cpan.org>
COPYRIGHT¶
Copyright 2010-2014 Philippe Bruhat (BooK), all rights reserved.
LICENSE¶
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.