#!perl
subtest
'Excluding with exact match'
=>
sub
{
my
$t
= Pinto::Tester->new;
my
$archive
= make_dist_archive(
'Foo-Bar-0.01 = Foo~0.01; Bar~0.01'
);
$t
->run_ok(
Add
=> {
archives
=>
$archive
,
no_index
=> [
'Foo'
] } );
$t
->registration_not_ok(
"AUTHOR/Foo-Bar-0.01/Foo~0.01/master"
);
$t
->registration_ok(
"AUTHOR/Foo-Bar-0.01/Bar~0.01/master"
);
my
$dist
=
$t
->get_distribution(
path
=>
'A/AU/AUTHOR/Foo-Bar-0.01.tar.gz'
);
my
@pkgs
=
$dist
->packages;
is(
scalar
@pkgs
, 1,
"Dist $dist has only one package"
);
is(
$pkgs
[0]->name,
'Bar'
,
"Remaining package is Bar"
);
};
subtest
'Excluding with regexes'
=>
sub
{
my
$t
= Pinto::Tester->new;
my
$archive
= make_dist_archive(
'Foo-Bar-0.01 = Foo~0.01; Bar~0.01; Baz~0.01'
);
$t
->run_ok(
Add
=> {
archives
=>
$archive
,
no_index
=> [
'/F'
,
'/r'
] } );
$t
->registration_not_ok(
"AUTHOR/Foo-Bar-0.01/Foo~0.01/master"
);
$t
->registration_not_ok(
"AUTHOR/Foo-Bar-0.01/Bar~0.01/master"
);
$t
->registration_ok(
"AUTHOR/Foo-Bar-0.01/Baz~0.01/master"
);
my
$dist
=
$t
->get_distribution(
path
=>
'A/AU/AUTHOR/Foo-Bar-0.01.tar.gz'
);
my
@pkgs
=
$dist
->packages;
is(
scalar
@pkgs
, 1,
"Dist $dist has only one package"
);
is(
$pkgs
[0]->name,
'Baz'
,
"Remaining package is Baz"
);
};
subtest
'Excluding all packages in the dist'
=>
sub
{
my
$t
= Pinto::Tester->new;
my
$archive
= make_dist_archive(
'Foo-0.01 = Foo~0.01'
);
$t
->run_throws_ok(
Add
=> {
archives
=>
$archive
,
no_index
=> [
'/o'
] },
qr/has no packages left/
,
'Cannot exclude all packages'
);
};
done_testing;