#!/usr/bin/perl
# Compile-testing for File::ShareDir
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More tests => 30;
use File::ShareDir;
sub dies {
my $code = shift;
my $message = shift || 'Code dies as expected';
my $rv = eval { &$code() };
ok( $@, $message );
}
# Print the contents of @INC
#diag("\@INC = qw{");
#foreach ( @INC ) {
# diag(" $_");
#}
#diag(" }");
#####################################################################
# Loading and Importing
# Don't import by default
ok( ! defined &dist_dir, 'dist_dir not imported by default' );
ok( ! defined &module_dir, 'module_dir not imported by default' );
ok( ! defined &dist_file, 'dist_file not imported by default' );
ok( ! defined &module_file, 'module_file not imported by default' );
ok( ! defined &class_file, 'class_file not imported by default' );
use_ok( 'File::ShareDir', ':ALL' );
# Import as needed
ok( defined &dist_dir, 'dist_dir imported' );
ok( defined &module_dir, 'module_dir imported' );
ok( defined &dist_file, 'dist_file imported' );
ok( defined &module_file, 'module_file imported' );
ok( defined &class_file, 'class_file imported' );
# Allow all named functions
use_ok(
'File::ShareDir',
'module_dir',
'module_file',
'dist_dir',
'dist_file',
'class_file',
);
#####################################################################
# Support Methods
is(
File::ShareDir::_MODULE('File::ShareDir'), 'File::ShareDir',
'_MODULE returns correct for known loaded module',
);
is(
File::ShareDir::_DIST('File-ShareDir'), 'File-ShareDir',
'_DIST returns correct for known good dist',
);
#####################################################################
# Module Tests
my $module_dir = module_dir('File::ShareDir');
ok( $module_dir, 'Can find our own module dir' );
ok( -d $module_dir, '... and is a dir' );
ok( -r $module_dir, '... and have read permissions' );
dies( sub { module_dir() }, 'No params to module_dir dies' );
dies( sub { module_dir('') }, 'Null param to module_dir dies' );
dies(
sub { module_dir('File::ShareDir::Bad') },
'Getting module dir for known non-existanct module dies',
);
my $module_file = module_file('File::ShareDir', 'test_file.txt');
ok( -f $module_file, 'module_file ok' );
#####################################################################
# Distribution Tests
my $dist_dir = dist_dir('File-ShareDir');
ok( $dist_dir, 'Can find our own dist dir' );
ok( -d $dist_dir, '... and is a dir' );
ok( -r $dist_dir, '... and have read permissions' );
my $dist_file = dist_file('File-ShareDir', 'sample.txt');
ok( $dist_file, 'Can find our sample module file' );
ok( -f $dist_file, '... and is a file' );
ok( -r $dist_file, '... and have read permissions' );
# Make sure the directory in dist_dir, matches the one from dist_file
# Bug found in Module::Install 0.54, fixed in 0.55
is(
File::Spec->catfile($dist_dir, 'sample.txt'), $dist_file,
'dist_dir and dist_file find the same directory',
);
#####################################################################
# Class Tests
use t::lib::ShareDir;
my $class_file = class_file('t::lib::ShareDir', 'test_file.txt');
ok( -f $class_file, 'class_file ok' );
is( $class_file, $module_file, 'class_file matches module_file for subclass' );