use Test::More 'no_plan'; use Test::NoWarnings; use strict; use YAML; use Path::Class; BEGIN { chdir 't' if -d 't'; use lib qw[../lib inc]; require 'conf.pl'; require 'pkg.pl'; } my $Class = 'JIB::Repository'; my $Root = $REPOSITORY_ROOT; my @Acc = sort qw(root config pool pool_rel index index_file packages); use_ok($Class); ### create object my $Repo; { $Repo = $Class->new(root => $Root); isa_ok($Repo, $Class, 'Object created'); my @can = sort $Repo->ls_accessors; ok(scalar @can, ' Object has accessors'); is_deeply(\@can, \@Acc, ' Object can do what it should'); for my $method (@can) { ok( defined $Repo->$method, " '$method' returns value"); } } ### create repo { ok($Repo->create(), 'Creating repository'); for my $file (qw(jibs dists)) { ok(-e dir($Root)->subdir($file), " '$file' exists"); } } ### adding packages { ### XXX config my $pkg1 = $PKGS{'p5-Foo-Bar-1.2-cpan+KANE'}; my $file1 = $pkg1->file->basename; ok($Repo->add_package(package => $pkg1), 'Adding a package'); ok(-e $Repo->pool->file($file1), ' package exists in the pool afterwards'); for my $index ( $Repo->index_file, $Repo->index_files(package => $pkg1) ) { ok(my $index_data = YAML::Load(scalar $index->slurp), " index '$index' looks ok"); is($index_data->[0]->{package}, $pkg1->package, ' and contains right package as 1st item'); } my $log = file('error_log'); { my $fh = $log->openw; local $Log::Message::Simple::ERROR_FH = $fh; ok(!$Repo->add_package(package => $pkg1), " Adding the same package again doesn't work"); ### must close file before being able to slurp it, at least on OSX close $fh; like(scalar $log->slurp, qr/already exists in this repository/, ' and yields an error'); $log->remove; } { local $Log::Message::Simple::ERROR_FH = $log->openw; ok($Repo->add_package(package => $pkg1, force => 1), ' But it does if we force it'); ok(-z $log, " and doesn't give an error message"); $log->remove; } } END { dir($Root)->rmtree; } # Local variables: # c-indentation-style: bsd # c-basic-offset: 4 # indent-tabs-mode: nil # End: # vim: expandtab shiftwidth=4: