package Test::BASE;
use parent 'Test::Class';
use strict;
use warnings;
use 5.010;
use Carp;
use File::Slurp::Tiny qw/ write_file /;
use File::Temp qw/ tempdir tempfile /;
use YAML qw/ DumpFile /;
INIT {
my( undef, $config ) = tempfile();
$ENV{GIT_CONFIG} = $config;
Test::Class->runtests;
}
sub build_fake_git_repo {
my $repo = shift || 'foo.git';
`mkdir $repo && cd $repo && git init && touch foo && git add foo && git commit -m"mu"`;
`cd $repo && touch bar && git add bar && git commit -m"mu2"`;
chdir $repo;
}
sub create_github_identity_file {
write_file( '.github-identity' , <<EOF );
user luser
pass my-user-token-thingie
EOF
}
sub create_tempdir_and_chdir {
my $dir = tempdir(CLEANUP=>1);
chdir $dir;
return $dir;
}
sub write_fake_config {
my $dir = create_tempdir_and_chdir();
my $config = [{
name => 'foo.git' ,
path => "$dir/foo.git" ,
type => 'git',
tags => 'foo' ,
},{
name => 'bar.git' ,
path => "$dir/bar.git" ,
repo => 'github@github.com:genehack/bar.git' ,
type => 'git'
},{
name => 'xxx.git' ,
path => "$dir/xxx.git" ,
type => 'git'
},{
name => 'bargle.git' ,
path => "$dir/bargle.git" ,
repo => 'github@github.com:genehack/bargle.git' ,
type => 'git'
}];
build_fake_git_repo( 'xxx.git' );
chdir('..');
build_fake_git_repo( 'bar.git' );
chdir('..');
my( $fh , $name ) = tempfile();
DumpFile( $name , $config );
return( $name , $dir );
}
1;