From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/perl
# Testing of installing files
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More tests => 24;
use URI::file ();
my $cleaner = Test::File::Cleaner->new('t');
#####################################################################
# Configuration variables
my $static_dir = catdir( 't', 'data', 'static_dir' );
ok( -d $static_dir, 'The static_dir exists' );
my $static_uri = URI::file->new( rel2abs( $static_dir ) );
isa_ok( $static_uri, 'URI::file' );
my $cgi_dir = catdir( 't', 'data', 'cgi_dir' );
ok( -d $cgi_dir, 'The cgi_dir exists' );
my $cgi_mock = catdir( 't', 'data', 'cgi_mock' );
ok( -d $cgi_mock, 'The cgi_mock exists' );
my $cgi_uri = URI::file->new( rel2abs( $cgi_mock ) );
isa_ok( $cgi_uri, 'URI::file' );
#####################################################################
# Instantiation
# Create the installation object
my $cgi = Module::CGI::Install->new(
interactive => 0,
install_static => 1,
static_dir => $static_dir,
static_uri => $static_uri->as_string,
install_cgi => 1,
cgi_dir => $cgi_dir,
cgi_uri => $cgi_uri->as_string,
);
isa_ok( $cgi, 'Module::CGI::Install' );
SCOPE: {
my $cleaner = Test::File::Cleaner->new('t');
# Specify what to install
ok( $cgi->add_script('CGI::Capture', 'cgicapture'), '->add_script(CGI::Capture, cgicapture) ok' );
ok( $cgi->add_class('CGI::Capture'), '->add_class() ok' );
# Check accessors
is( $cgi->interactive, '', '->interactive ok' );
is( $cgi->install_cgi, 1, '->install_cgi ok' );
is( $cgi->install_static, 1, '->install_static ok' );
is( $cgi->cgi_dir, $cgi_dir, '->cgi_dir ok' );
is( $cgi->cgi_uri, $cgi_uri, '->statuc_uri ok' );
isa_ok( $cgi->cgi_map, 'URI::ToDisk' );
is( $cgi->cgi_map->path, $cgi_dir, '->cgi_dir ok' );
is( $cgi->cgi_map->uri, $cgi_uri, '->cgi_uri ok' );
is( $cgi->static_dir, $static_dir, '->static_dir undef' );
is( $cgi->static_uri, $static_uri, '->static_uri undef' );
isa_ok( $cgi->static_map, 'URI::ToDisk' );
# Run the prepare method, which should consider everything ok
ok( $cgi->prepare, '->prepare ok' );
isa_ok( $cgi->cgi_capture, 'CGI::Capture' );
}
SCOPE: {
my $cleaner = Test::File::Cleaner->new('t');
# Execute the installer to install the files
ok( $cgi->run, '->run ok' );
my $installed_bin = $cgi->cgi_map->catfile('cgicapture')->path;
ok( -f $installed_bin, "Installed file created '$installed_bin'" );
my $installed_class = $cgi->cgi_map->catfile('lib', 'CGI', 'Capture.pm')->path;
ok( -f $installed_class, "Installed file created '$installed_class'" );
}