Commit | Line | Data |
2503822b |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use MooseX::Runnable::Util::ArgParser; |
5 | |
6 | use Test::TableDriven ( |
7 | class_name => { |
8 | 'Foo' => 'Foo', |
9 | '-Ilib Foo' => 'Foo' , |
10 | '-I/foo/bar/lib -Ilib -IFoo module with lots of args' => 'module' , |
11 | '-- Foo' => 'Foo', |
12 | '-Ilib -- Foo' => 'Foo', |
13 | '-Ilib -MFoo::Bar -- Foo::Baz' => 'Foo::Baz', |
14 | '-MFoo Bar' => 'Bar', |
15 | '+Plugin1 --args --go --here -- Foo' => 'Foo', |
16 | '+P --args --arehere +Q --more --args -- Foo' => 'Foo', |
17 | '-Ilib +P --args --arehere +Q --more --args -Ilib -- Foo' => 'Foo', |
2123b3b8 |
18 | '+P --args -- Foo -- Bar' => 'Foo', |
19 | '-Ilib +Debug -- PlanFinder' => 'PlanFinder', |
2503822b |
20 | }, |
21 | |
22 | modules => { |
23 | 'Foo' => [], |
24 | 'Foo -MFoo' => [], |
25 | '-MFoo' => ['Foo'], |
26 | '-MFoo Foo' => ['Foo'], |
27 | '-MFoo Foo' => ['Foo'], |
28 | '-MFoo -MFoo Foo' => ['Foo', 'Foo'], |
29 | '-MFoo -MBar -MBaz::Quux -Ilib OH::HAI' => ['Foo','Bar','Baz::Quux'], |
30 | '+End -MFoo -MBar -- OH::HAI' => [], |
31 | '-Ilib +End -MFoo -- OH::HAI' => [], |
32 | '-Ilib -MFoo OH::HAI' => ['Foo'], |
33 | '-Ilib -MFoo +End -MBar -- OH::HAI' => ['Foo'], |
2123b3b8 |
34 | '-Ilib +Debug -- PlanFinder' => [], |
2503822b |
35 | }, |
36 | |
37 | include_paths => { |
38 | 'Foo' => [], |
39 | 'Foo -Ilib' => [], |
40 | '-Ilib Foo' => ['lib'], |
41 | '-MFoo Foo' => [], |
42 | '-MFoo -MBar -MBaz::Quux -Ilib OH::HAI' => ['lib'], |
43 | '+End -MFoo -MBar -- OH::HAI' => [], |
44 | '-Ilib +End -MFoo -- OH::HAI' => ['lib'], |
45 | '-Ilib -MFoo OH::HAI' => ['lib'], |
46 | '-Ilib -MFoo +End -IBar -- OH::HAI' => ['lib'], |
47 | '-Ilib -MFoo -I../../../../lib +End -IBar -- OH::HAI' => |
48 | ['lib', '../../../../lib'], |
2123b3b8 |
49 | '-Ilib +Debug -- PlanFinder' => ['lib'], |
2503822b |
50 | }, |
51 | |
52 | plugins => { |
53 | 'Foo' => {}, |
54 | '-Ilib Foo' => {}, |
55 | '-Ilib -MFoo -- Bar' => {}, |
56 | '+One --arg +Two --arg2 -- End' => { One => ['--arg'], Two => ['--arg2'] }, |
57 | '+Debug +PAR +Foo::Bar -- Baz' => { Debug => [], PAR => [], 'Foo::Bar' => [] }, |
2123b3b8 |
58 | '-Ilib +Debug -- PlanFinder' => { Debug => [] }, |
2503822b |
59 | }, |
60 | |
61 | is_help => { |
2123b3b8 |
62 | '--help' => 1, |
63 | '-h' => 1, |
64 | '-?' => 1, |
65 | '--?' => 0, |
66 | '--h' => 0, |
67 | '+Foo --help' => 0, |
68 | 'Foo' => 0, |
69 | '-Ilib -MFoo --help' => 1, |
70 | '-- Foo --help' => 0, |
71 | 'Foo --help' => 0, |
72 | 'Foo -?' => 0, |
73 | 'Foo -h' => 0, |
74 | '-Ilib +Debug -- PlanFinder' => 0, |
2503822b |
75 | }, |
76 | |
77 | app_args => { |
2123b3b8 |
78 | 'Foo' => [], |
79 | '-Ilib Foo' => [], |
80 | '-Ilib -MFoo Bar' => [], |
81 | 'Foo Bar' => ['Bar'], |
82 | 'Foo Bar Baz' => ['Bar', 'Baz'], |
83 | '-- Foo Bar Baz' => ['Bar', 'Baz'], |
84 | '-Ilib Foo -Ilib' => ['-Ilib'], |
85 | '-MFoo Foo -MFoo' => ['-MFoo'], |
86 | '-MFoo -MFoo Foo -MFoo' => ['-MFoo'], |
87 | '-- Foo --help' => ['--help'], |
88 | '-Ilib +Debug -- PlanFinder' => [], |
2503822b |
89 | }, |
90 | ); |
91 | |
92 | sub class_name { |
93 | my ($argv) = @_; |
94 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
95 | return $p->class_name; |
96 | } |
97 | |
98 | sub modules { |
99 | my ($argv) = @_; |
100 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
101 | return $p->modules; |
102 | } |
103 | |
104 | sub include_paths { |
105 | my ($argv) = @_; |
106 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
107 | return [ map { $_->stringify } $p->include_paths ]; |
108 | } |
109 | |
110 | sub plugins { |
111 | my ($argv) = @_; |
112 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
113 | return $p->plugins; |
114 | } |
115 | |
116 | sub is_help { |
117 | my ($argv) = @_; |
118 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
119 | return $p->is_help ? 1 : 0; |
120 | } |
121 | |
122 | sub app_args { |
123 | my ($argv) = @_; |
124 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
125 | return $p->app_args; |
126 | } |
127 | |
128 | runtests; |