#!perl
subtest
string_constructor
=>
sub
{
my
$target
= Pinto::Target::Distribution->new(
'Author/subdir/Foo-1.2.tar.gz'
);
is
$target
->author,
'AUTHOR'
,
'author attribute'
;
is
$target
->archive,
'Foo-1.2.tar.gz'
,
'archive attribute'
;
is
$target
->path,
'A/AU/AUTHOR/subdir/Foo-1.2.tar.gz'
,
'Constructed path'
;
is
"$target"
,
'AUTHOR/subdir/Foo-1.2.tar.gz'
,
'Stringified object'
;
};
subtest
hash_constructor
=>
sub
{
my
$target
= Pinto::Target::Distribution->new(
author
=>
'Author'
,
subdirs
=> [
qw(foo bar)
],
archive
=>
'Foo-1.2.tar.gz'
);
is
$target
->author,
'AUTHOR'
,
'author attribute'
;
is
$target
->archive,
'Foo-1.2.tar.gz'
,
'archive attribute'
;
is
$target
->path,
'A/AU/AUTHOR/foo/bar/Foo-1.2.tar.gz'
,
'Constructed path'
;
is
"$target"
,
'AUTHOR/foo/bar/Foo-1.2.tar.gz'
,
'Stringified object'
;
};
subtest
invalid_constructor
=>
sub
{
throws_ok { Pinto::Target::Distribution->new(
'AUTHOR/'
) }
qr{Invalid distribution target}
,
'Invalid dist target'
;
throws_ok { Pinto::Target::Distribution->new(
'/Foo-1.2.tar.gz'
) }
qr{Invalid distribution target}
,
'Invalid dist target'
;
throws_ok { Pinto::Target::Distribution->new(
'Foo-1.2.tar.gz'
) }
qr{Invalid distribution target}
,
'Invalid dist target'
;
throws_ok { Pinto::Target::Distribution->new(
''
) }
qr{Invalid distribution target}
,
'Empty dist target'
;
};
done_testing;