package RepoTest::TestKit; use strict; use warnings; require Test::More; require File::Spec; #################### sub check_injection { my $class = shift; my $files = shift; die if not defined $files; $files = [$files] if not ref($files); my $repodir = shift || File::Spec->catdir(RepoTest->TempDir, 'repo'); foreach my $file (@$files) { my ($dn, $dv, $arch, $pv) = PAR::Dist::parse_dist_name($file); Test::More::ok( -e File::Spec->catfile($repodir, $arch, $pv, $file), "par '$file' was injected" ); } # test whether the stuff is in the repository now my $repo = RepoTest->CanOpenRepo($repodir); my $result = {@{$repo->query_module(regex => '^Test::Kit$')}}; my $expect = {map {($_, '0.02')} @$files}; Test::More::is_deeply( $result, $expect ); #use Data::Dumper; warn Dumper $result; #use Data::Dumper; warn Dumper $expect; $result = {@{$repo->query_dist(regex => '^Test-Kit')}}; $expect = {map {($_, { 'Test::Kit' => '0.02', 'Test::Kit::Result' => '0.02', 'Test::Kit::Features' => '0.02', }, )} @$files }; Test::More::is_deeply( $result, $expect, 'provides matches' ); } #################### sub check_symlinks { my $class = shift; my $symlinks = shift || {}; my $repodir = shift || File::Spec->catdir(RepoTest->TempDir, 'repo'); my $repo = RepoTest->CanOpenRepo($repodir); my ($dbm) = $repo->symlinks_dbm(); my $copy = tied(%$dbm)->export(); # don't do this at home; Test::More::is_deeply( $copy, $symlinks, 'symlinks match' ); } #################### sub check_dependencies { my $class = shift; my $deps = shift || {}; my $repodir = shift || File::Spec->catdir(RepoTest->TempDir, 'repo'); my $repo = RepoTest->CanOpenRepo($repodir); my ($dbm) = $repo->dependencies_dbm(); my $copy = tied(%$dbm)->export(); # don't do this at home; Test::More::is_deeply( $copy, $deps, 'dependencies match' ); } #################### sub check_removal { my $class = shift; my $file = shift; die if not defined $file; my $repodir = shift || File::Spec->catdir(RepoTest->TempDir, 'repo'); my ($dn, $dv, $arch, $pv) = PAR::Dist::parse_dist_name($file); my $repo = RepoTest->CanOpenRepo($repodir); Test::More::ok( !-f File::Spec->catfile($repodir, $arch, $pv, $file), 'par was removed' ); Test::More::is_deeply( $repo->query_module(regex => '^Test::Kit$'), [], ); Test::More::is_deeply( $repo->query_dist(regex => '^Test-Kit'), [] ); } 1;