my
$base
= tempdir
CLEANUP
=> 1;
my
$cpan
= CPAN::Mirror::Tiny->new(
base
=>
$base
);
{
my
$tarball
= tempdir(
CLEANUP
=> 1) .
"/CPAN-Mirror-Tiny-0.02.tar.gz"
;
my
$res
= HTTP::Tiny->new->mirror(
$url
,
$tarball
);
die
unless
$res
->{success};
$cpan
->inject(
$tarball
);
ok -f
$tarball
;
}
$cpan
->write_index(
compress
=> 1);
$cpan
->write_index;
for
my
$file
(
qw(
authors/id/S/SK/SKAJI/Distribution-Metadata-0.03.tar.gz
authors/id/V/VE/VENDOR/CPAN-Mirror-Tiny-0.02.tar.gz
authors/id/S/SK/SKAJI/Carl-0.01-9188c0e.tar.gz
authors/id/S/SK/SKAJI/Process-Pipeline-0.03-831eed0.tar.gz
modules/02packages.details.txt.gz
modules/02packages.details.txt
)
) {
ok -f
"$base/$file"
;
}
my
$index
=
do
{
open
my
$fh
,
"<"
,
"$base/modules/02packages.details.txt"
;
local
$/; <
$fh
>;
};
note
$index
;
like
$index
,
qr{^Distribution::Metadata\s+0.03\s+S/SK/SKAJI/Distribution-Metadata-0.03.tar.gz$}
sm;
like
$index
,
qr{^CPAN::Mirror::Tiny::Server\s+undef\s+V/VE/VENDOR/CPAN-Mirror-Tiny-0.02.tar.gz$}
sm;
like
$index
,
qr{^Carl\s+0.01\s+S/SK/SKAJI/Carl-0.01-9188c0e.tar.gz$}
sm;
{
my
$local
= tempdir
CLEANUP
=> 1;
my
$out
=
"$local/out.log"
;
my
@cmd
= (
"cpanm"
,
"-nq"
,
"-L$local"
,
"--cascade-search"
,
"--mirror-index"
,
"$base/modules/02packages.details.txt"
,
);
my
$ok
= !
system
"@cmd Distribution::Metadata >$out 2>&1"
;
ok
$ok
;
my
$log
=
do
{
open
my
$fh
,
"<"
,
$out
or
die
;
local
$/; <
$fh
> };
like
$log
,
qr/Distribution-Metadata-0.03/
;
}
done_testing;