Alien-ActiveMQ
view release on metacpan or search on metacpan
#!/usr/bin/env perl
use strict;
use warnings;
use FindBin ();
use Test::Exception;
use Test::More;
use Path::Class;
use File::Temp qw/tempdir/;
use File::Copy::Recursive qw/ dircopy /;
# This can be set to a true value to leave the temp files from the tests around for later
# examination. They'll be in the t/run directory.
use constant LEAVE_TEMPFILES => 0;
BEGIN { require_ok "$FindBin::RealBin/../script/install-activemq"; }
{
package TestInstall;
use Moose;
use MooseX::Types::Path::Class;
use strict;
use warnings;
use base qw/Alien::ActiveMQ::Install/;
use File::Temp qw/tempdir/;
use Path::Class;
use FindBin ();
has _leave_tempfiles => (
isa => 'Bool',
is => 'ro',
default => main::LEAVE_TEMPFILES(),
);
has _temp_dir => (
isa => 'Path::Class::Dir',
coerce => 1,
is => 'ro',
lazy_build => 1,
);
sub _build__temp_dir {
my $self = shift;
my $parent = dir($FindBin::RealBin, 'run');
$parent->mkpath;
return tempdir( "testinstall-XXXXXX", DIR => $parent,
CLEANUP => !$self->_leave_tempfiles);
}
has _output_data => (
isa => 'ArrayRef[Str]',
is => 'rw',
default => sub { [] },
);
sub _get {}
sub _getstore {}
sub _dircopy {}
sub _build_install_dir {
my $self = shift;
return dir( $self->_temp_dir, $self->version_number );
}
sub output {
my $self = shift;
push @{$self->_output_data}, @_, "\n";
return 1;
}
}
our $_data_dir = dir($FindBin::RealBin, 'data');
# Test version number handling
{
my $i = TestInstall->new;
ok $i;
ok !$i->has_version_number, 'No version number set';
is $i->version_number, '5.10.0', 'Defaults to new version';
}
{
my $i = new_ok('TestInstall', [ version_number => '9.2.1' ]);
ok $i->has_version_number, 'Version number set';
is $i->version_number, '9.2.1', 'Gets correct version';
}
throws_ok { TestInstall->new( version_number => {} ) } qr/version_number/,
'throws when version not string';
# Test script name
{
my $i = new_ok('TestInstall');
is($i->script_name, 'script.t', 'Found script name');
}
# Test URI building
{
my $i = new_ok('TestInstall');
my $version = $i->version_number;
is($i->download_uri, "http://www.apache.org/dyn/closer.cgi?path=/activemq/$version/apache-activemq-$version-bin.tar.gz", 'Download URI is good');
is($i->archive_uri, "http://archive.apache.org/dist/activemq/apache-activemq/$version/apache-activemq-$version-bin.tar.gz", 'Archive URI is good');
}
# Test fetching URLs
{
my $i = new_ok('TestInstall');
my $version = $i->version_number;
local *TestInstall::download_current = sub { my $self = shift; $self->{_got_curr} = 1; return $self->tarball };
( run in 1.583 second using v1.01-cache-2.11-cpan-f0fbb3f571b )