File: README

package info (click to toggle)
libtest-file-sharedir-perl 1.000005-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 440 kB
  • ctags: 45
  • sloc: perl: 505; makefile: 2
file content (162 lines) | stat: -rw-r--r-- 5,258 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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 <kentnl@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 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.