Scroll to navigation

Test::File::ShareDir(3pm) User Contributed Perl Documentation Test::File::ShareDir(3pm)

NAME

Test::File::ShareDir - Create a Fake ShareDir for your modules for testing.

VERSION

version 0.3.1

SYNOPSIS

    use Test::More;
    # use FindBin; optional
    use Test::File::ShareDir
        # -root => "$FindBin::Bin/../" # optional,
        -share => {
            -module => { 'My::Module' => 'share/MyModule' }
            -dist   => { 'My-Dist'    => 'share/somefolder' }
        };
    use My::Module;
    use File::ShareDir qw( module_dir dist_dir );
    module_dir( 'My::Module' ) # dir with files from $dist/share/MyModule
    dist_dir( 'My-Dist' ) # dir with files from $dist/share/somefolder

DESCRIPTION

This module only has support for creating 'new' style share dirs and are NOT compatible with old File::ShareDirs.
For this reason, unless you have File::ShareDir 1.00 or later installed, this module will not be usable by you.

IMPORTING

-root

This parameter is the prefix the other paths are relative to.
If this parameter is not specified, it defaults to the Current Working Directory ( "CWD" ).
In versions prior to 0.3.0, this value was mandatory.
The rationale behind using "CWD" as the default value is as follows.
Most users of this module are likely to be using it to test distributions
Most users of this module will be using it in "$project/t/" to load files from "$project/share/"
Most "CPAN" tools run tests with "CWD" = $project
Therefor, defaulting to "CWD" is a reasonably sane default for most people, but where it is not it can still be overridden.
  -root => "$FindBin::Bin/../" # resolves to project root from t/ regardless of Cwd.

-share

This parameter is mandatory, and contains a "hashref" containing the data that explains what directories you want shared.
  -share =>  { ..... }
-module
"-module" contains a "hashref" mapping Module names to path names for module_dir style share dirs.
  -share => {
    -module => { 'My::Module' => 'share/mymodule/', }
  }
  ...
  module_dir('My::Module')
Notedly, it is a "hashref", which means there is a limitation of one share dir per module. This is simply because having more than one share dir per module makes no sense at all.
-dist
"-dist" contains a "hashref" mapping Distribution names to path names for dist_dir style share dirs. The same limitation applied to "-module" applies here.
  -share => {
    -dist => { 'My-Dist' => 'share/mydist' }
  }
  ...
  dist_dir('My-Dist')

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Kent Fredric <kentnl@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
2012-06-24 perl v5.14.2