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.