#!/usr/bin/perl
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More 0.86 tests => 61;
use Probe::Perl ();
my $perl = Probe::Perl->find_perl_interpreter;
@Perl::Dist::Util::Toolchain::DELEGATE = (
$perl, '-Mblib',
);
#####################################################################
# Create and execute a resolver
sub check_simple_object {
my $toolchain = shift;
is( $toolchain->errstr, undef, '->errstr returns false' );
is( $toolchain->perl_version, '5.008008', '->perl_version ok' );
my @modules = $toolchain->modules;
is_deeply( \@modules, [ 'File::Spec' ], 'List ->modules ok' );
is( scalar($toolchain->modules), 1, 'Scalar ->modules ok' );
my @dists = $toolchain->dists;
is( scalar($toolchain->dists), 1, 'Scalar ->dists ok' );
is( scalar(@dists), 1, 'Got one distribution' );
like( $dists[0], qr/PathTools/, 'Got expected dist filename' );
}
# Test the simplest run-mode
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008008',
modules => [ 'File::Spec' ],
] );
my $p = $toolchain->prepare;
if ( ! $p and $@ =~ /Permission denied/ ) {
foreach ( 2 .. 43 ) {
ok( 1, 'No permissions to test, skipping' );
}
exit(0);
}
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->run, '->run ok' );
check_simple_object( $toolchain );
}
# Test the force option
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008008',
modules => [ 'File::Spec' ],
force => {
'File::Spec' => 'PathTools-forced',
},
] );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->run, '->run ok' );
check_simple_object( $toolchain );
is( ($toolchain->dists)[0], 'PathTools-forced', 'Force option works' );
}
# Test via a delegation
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008008',
modules => [ 'File::Spec' ],
] );
isa_ok(
$toolchain,
'Perl::Dist::Util::Toolchain'
);
ok( $toolchain->delegate, '->prepare ok' );
check_simple_object( $toolchain );
}
# Test a full set for Perl 5.008008
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008008',
] );
is( $toolchain->perl_version, '5.008008', '->perl_version ok' );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->run, '->run ok' );
is( $toolchain->errstr, undef, '->errstr is undef' );
my @dists = $toolchain->dists;
ok( scalar(@dists) > 5, 'Got at least 5 distributions' );
}
# Test a full set for Perl 5.008009
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008009',
] );
is( $toolchain->perl_version, '5.008009', '->perl_version ok' );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->run, '->run ok' );
is( $toolchain->errstr, undef, '->errstr is undef' );
my @dists = $toolchain->dists;
ok( scalar(@dists) > 5, 'Got at least 5 distributions' );
}
# Test a full set for Perl 5.010000
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.010000',
] );
is( $toolchain->perl_version, '5.010000', '->perl_version ok' );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->run, '->run ok' );
is( $toolchain->errstr, undef, '->errstr is undef' );
my @dists = $toolchain->dists;
ok( scalar(@dists) > 5, 'Got at least 3 distributions' );
}
# Test a full set for Perl 5.008008 via delegation
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.008008',
] );
is( $toolchain->perl_version, '5.008008', '->perl_version ok' );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->delegate, '->run ok' );
is( $toolchain->errstr, undef, '->errstr is undef' );
my @dists = $toolchain->dists;
ok( scalar(@dists) > 5, 'Got at least 5 distributions' );
}
# Test a full set for Perl 5.010000 via delegation
SCOPE: {
my $toolchain = new_ok( 'Perl::Dist::Util::Toolchain', [
perl_version => '5.010000',
] );
is( $toolchain->perl_version, '5.010000', '->perl_version ok' );
ok( $toolchain->prepare, '->prepare ok' );
ok( $toolchain->delegate, '->run ok' );
is( $toolchain->errstr, undef, '->errstr is undef' );
my @dists = $toolchain->dists;
ok( scalar(@dists) > 5, 'Got at least 3 distributions' );
}