The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use utf8;
use Test::More;
use OrePAN::Package::Index;
use File::Temp;
use OrePAN::Archive;

$Log::Minimal::PRINT = sub {
    my ( $time, $type, $message, $trace) = @_;
    note "$time [$type] $message at $trace";
};

my $tmp = File::Temp->new();

# make index
{
    my $index = OrePAN::Package::Index->new(filename => $tmp->filename);
    my $archive = OrePAN::Archive->new(filename => "t/dummy-cpan/Foo-Bar-0.01.tar.gz");
    my %packages = $archive->get_packages;
    is_deeply \%packages, { 'Foo::Bar' => '0.01' };
    my $pauseid = "DUMMY";

    $index->add(
        File::Spec->catfile(
            substr( $pauseid, 0, 1 ), substr( $pauseid, 0, 2 ),
            $pauseid, "Foo-Bar-0.01.tar.gz" 
        ),
        \%packages
    );
    $index->save();
}

# and read it.
my $fh = IO::Zlib->new($tmp->filename, 'rb') or die $!;
my $got = join('', <$fh>); # Note: IO::Zlib does not handle $/
is $got, <<"...";
File:         02packages.details.txt

Foo::Bar\t0.01\tD/DU/DUMMY/Foo-Bar-0.01.tar.gz
...

done_testing;