Giter VIP home page Giter VIP logo

test-file-sharedir's Introduction

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

VERSION
    version 1.000005

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.

SIMPLE INTERFACE
    Starting with version 0.4.0, there are a few extra interfaces you can
    use.

    These will probably be more useful, and easier to grok, because they
    don't have a layer of indirection in order to simultaneously support
    both "Module" and "Dist" "ShareDir"'s.

  Simple Exporter Interfaces
   "Test::File::ShareDir::Dist"
    "Test::File::ShareDir::Dist" provides a simple export interface for
    making "TempDir" "ShareDir"'s from a given path:

        use Test::File::ShareDir::Dist { "Dist-Name" => "share/" };

    This will automatically create a "ShareDir" for "Dist-Name" in a
    "TempDir" based on the contents of "CWD/share/"

    See "Test::File::ShareDir::Dist" for details.

   "Test::File::ShareDir::Module"
    "Test::File::ShareDir::Module" provides a simple export interface for
    making "TempDir" "ShareDir"'s from a given path:

        use Test::File::ShareDir::Module { "Module::Name" => "share/" };

    This will automatically create a "ShareDir" for "Module::Name" in a
    "TempDir" based on the contents of "CWD/share/"

    See "Test::File::ShareDir::Module" for details.

  Simple Object Oriented Interfaces
   "Test::File::ShareDir::Object::Dist"
    "Test::File::ShareDir::Object::Dist" provides a simple object oriented
    interface for making "TempDir" "ShareDir"'s from a given path:

        use Test::File::ShareDir::Object::Dist;

        my $obj = Test::File::ShareDir::Object::Dist->new( dists => { "Dist-Name" => "share/" } );
        $obj->install_all_dists;
        $obj->add_to_inc;

    This will automatically create a "ShareDir" for "Dist-Name" in a
    "TempDir" based on the contents of "CWD/share/"

    See "Test::File::ShareDir::Object::Dist" for details.

   "Test::File::ShareDir::Object::Module"
    "Test::File::ShareDir::Object::Module" provides a simple object oriented
    interface for making "TempDir" "ShareDir"'s from a given path:

        use Test::File::ShareDir::Object::Module;

        my $obj = Test::File::ShareDir::Object::Module->new( modules => { "Module::Name" => "share/" } );
        $obj->install_all_modules;
        $obj->add_to_inc;

    This will automatically create a "ShareDir" for "Module::Name" in a
    "TempDir" based on the contents of "CWD/share/"

    See "Test::File::ShareDir::Object::Module" for details.

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 <[email protected]>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Kent Fredric <[email protected]>.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

test-file-sharedir's People

Contributors

kentfredric avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.