1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
use 5.008004;
use Test2::V0 -no_srand => 1;
use Test::Alien::Build;
use Alien::Build::Plugin::Prefer::SortVersions;
use Path::Tiny qw( path );
use Alien::Build::Util qw( _dump );
subtest 'updates requires' => sub {
my $plugin = Alien::Build::Plugin::Prefer::SortVersions->new;
my $build = alienfile filename => 'corpus/blank/alienfile';
my $meta = $build->meta;
$plugin->init($meta);
is( $build->requires('share')->{'Sort::Versions'}, 0 );
note _dump $meta;
};
subtest 'prefer' => sub {
my $builder = sub {
my $plugin = Alien::Build::Plugin::Prefer::SortVersions->new(@_);
my $build = alienfile filename => 'corpus/blank/alienfile';
my $meta = $build->meta;
$plugin->init($meta);
eval { $build->load_requires('share') };
$@ ? () : wantarray ? ($build,$meta) : $build; ## no critic
};
my $make_list = sub {
return {
type => 'list',
list => [
map {
my $h = { filename => $_, url => "http://example.test/foo/bar/$_" };
} @_
],
};
};
my $make_cmp = sub {
return {
type => 'list',
list => [
map {
hash {
field filename => $_;
field url => "http://example.test/foo/bar/$_";
field version => T();
},
} @_
],
};
};
skip_all 'test requires Sort::Versions' unless $builder->();
subtest 'default settings' => sub {
my $build = $builder->();
my $res = $build->prefer($make_list->(qw(roger-0.0.0.tar.gz abc-2.3.4.tar.gz xyz-1.0.0.tar.gz)));
note _dump($res);
is( $res, $make_cmp->(qw( abc-2.3.4.tar.gz xyz-1.0.0.tar.gz roger-0.0.0.tar.gz )) );
};
subtest 'filter' => sub {
my $build = $builder->(filter => qr/abc|xyz/);
my $res = $build->prefer($make_list->(qw(roger-0.0.0.tar.gz abc-2.3.4.tar.gz xyz-1.0.0.tar.gz)));
note _dump($res);
is( $res, $make_cmp->(qw( abc-2.3.4.tar.gz xyz-1.0.0.tar.gz )) );
};
subtest 'version regex' => sub {
my $build = $builder->(qr/^foo-[0-9\.]+-bar-([0-9\.](?:[0-9\.]*[0-9])?)/);
my $res = $build->prefer($make_list->(qw( foo-10.0-bar-0.1.0.tar.gz foo-5-bar-2.1.0.tar.gz bogus.tar.gz )));
note _dump($res);
is( $res, $make_cmp->(qw( foo-5-bar-2.1.0.tar.gz foo-10.0-bar-0.1.0.tar.gz )) );
};
};
done_testing;
|