XS-Install

 view release on metacpan or  search on metacpan

t/payload.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Test::Deep;
use XS::Install;

sub tune (@);
chdir 't/testmod' or die $!;

my $args;

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => '',
});
cmp_deeply($args->{PM}, {'pronlist.txt' => '/$(FULLEXT).x/payload/pronlist.txt'});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => '1.txt',
});
cmp_deeply($args->{PM}, {'pronlist.txt' => '/$(FULLEXT).x/payload/1.txt'});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => 'misc/',
});
cmp_deeply($args->{PM}, {'pronlist.txt' => '/$(FULLEXT).x/payload/misc/pronlist.txt'});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => 'misc/1.txt',
});
cmp_deeply($args->{PM}, {'pronlist.txt' => '/$(FULLEXT).x/payload/misc/1.txt'});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => '',
    'data'         => '',
});
cmp_deeply($args->{PM}, {
    'pronlist.txt'           => '/$(FULLEXT).x/payload/pronlist.txt',
    'data/db.db'             => '/$(FULLEXT).x/payload/data/db.db',
    'data/data.txt'          => '/$(FULLEXT).x/payload/data/data.txt',
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/data/ccdat/ccdata1.bin',
    'data/ccdat/ccdata2.bin' => '/$(FULLEXT).x/payload/data/ccdat/ccdata2.bin',
});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => '',
    'data'         => '/',
});
cmp_deeply($args->{PM}, {
    'pronlist.txt'           => '/$(FULLEXT).x/payload/pronlist.txt',
    'data/db.db'             => '/$(FULLEXT).x/payload/db.db',
    'data/data.txt'          => '/$(FULLEXT).x/payload/data.txt',
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/ccdat/ccdata1.bin',
    'data/ccdat/ccdata2.bin' => '/$(FULLEXT).x/payload/ccdat/ccdata2.bin',
});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'pronlist.txt' => '',
    'data'         => 'jopa',
});
cmp_deeply($args->{PM}, {
    'pronlist.txt'           => '/$(FULLEXT).x/payload/pronlist.txt',
    'data/db.db'             => '/$(FULLEXT).x/payload/jopa/db.db',
    'data/data.txt'          => '/$(FULLEXT).x/payload/jopa/data.txt',
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/jopa/ccdat/ccdata1.bin',
    'data/ccdat/ccdata2.bin' => '/$(FULLEXT).x/payload/jopa/ccdat/ccdata2.bin',
});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'data/ccdat/ccdata1.bin' => '/jopa/',
});
cmp_deeply($args->{PM}, {
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/jopa/data/ccdat/ccdata1.bin',
});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'data/ccdat/ccdata1.bin' => '/jopa/cc1.bin',
});
cmp_deeply($args->{PM}, {
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/jopa/cc1.bin',
});

$args = tune XS::Install::makemaker_args(NAME => 'TestMod', PAYLOAD => {
    'data/ccdat' => '/jopa/',
});
cmp_deeply($args->{PM}, {
    'data/ccdat/ccdata1.bin' => '/$(FULLEXT).x/payload/jopa/ccdata1.bin',
    'data/ccdat/ccdata2.bin' => '/$(FULLEXT).x/payload/jopa/ccdata2.bin',
});

done_testing();

sub tune (@) {
    my $args = shift;
    for (values %{$args->{PM}||{}}) {
        s/\$\(INST_ARCHLIB\)//;
        s/\$\(INST_LIB\)//;
    }
    delete @{$args->{PM}}{'lib/TestMod.pm', 'lib/TestMod/Pack.pm'};
    return $args;
}



( run in 0.990 second using v1.01-cache-2.11-cpan-39bf76dae61 )