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', |
18 | '+P --args -- Foo -- Bar', 'Foo', |
19 | }, |
20 | |
21 | modules => { |
22 | 'Foo' => [], |
23 | 'Foo -MFoo' => [], |
24 | '-MFoo' => ['Foo'], |
25 | '-MFoo Foo' => ['Foo'], |
26 | '-MFoo Foo' => ['Foo'], |
27 | '-MFoo -MFoo Foo' => ['Foo', 'Foo'], |
28 | '-MFoo -MBar -MBaz::Quux -Ilib OH::HAI' => ['Foo','Bar','Baz::Quux'], |
29 | '+End -MFoo -MBar -- OH::HAI' => [], |
30 | '-Ilib +End -MFoo -- OH::HAI' => [], |
31 | '-Ilib -MFoo OH::HAI' => ['Foo'], |
32 | '-Ilib -MFoo +End -MBar -- OH::HAI' => ['Foo'], |
33 | }, |
34 | |
35 | include_paths => { |
36 | 'Foo' => [], |
37 | 'Foo -Ilib' => [], |
38 | '-Ilib Foo' => ['lib'], |
39 | '-MFoo Foo' => [], |
40 | '-MFoo -MBar -MBaz::Quux -Ilib OH::HAI' => ['lib'], |
41 | '+End -MFoo -MBar -- OH::HAI' => [], |
42 | '-Ilib +End -MFoo -- OH::HAI' => ['lib'], |
43 | '-Ilib -MFoo OH::HAI' => ['lib'], |
44 | '-Ilib -MFoo +End -IBar -- OH::HAI' => ['lib'], |
45 | '-Ilib -MFoo -I../../../../lib +End -IBar -- OH::HAI' => |
46 | ['lib', '../../../../lib'], |
47 | |
48 | }, |
49 | |
50 | plugins => { |
51 | 'Foo' => {}, |
52 | '-Ilib Foo' => {}, |
53 | '-Ilib -MFoo -- Bar' => {}, |
54 | '+One --arg +Two --arg2 -- End' => { One => ['--arg'], Two => ['--arg2'] }, |
55 | '+Debug +PAR +Foo::Bar -- Baz' => { Debug => [], PAR => [], 'Foo::Bar' => [] }, |
56 | }, |
57 | |
58 | is_help => { |
59 | '--help' => 1, |
60 | '-h' => 1, |
61 | '-?' => 1, |
62 | '--?' => 0, |
63 | '--h' => 0, |
64 | '+Foo --help' => 0, |
65 | 'Foo' => 0, |
66 | '-Ilib -MFoo --help' => 1, |
67 | '-- Foo --help' => 0, |
68 | 'Foo --help' => 0, |
69 | 'Foo -?' => 0, |
70 | 'Foo -h' => 0, |
71 | }, |
72 | |
73 | app_args => { |
74 | 'Foo' => [], |
75 | '-Ilib Foo' => [], |
76 | '-Ilib -MFoo Bar' => [], |
77 | 'Foo Bar' => ['Bar'], |
78 | 'Foo Bar Baz' => ['Bar', 'Baz'], |
79 | '-- Foo Bar Baz' => ['Bar', 'Baz'], |
80 | '-Ilib Foo -Ilib' => ['-Ilib'], |
81 | '-MFoo Foo -MFoo' => ['-MFoo'], |
82 | '-MFoo -MFoo Foo -MFoo' => ['-MFoo'], |
83 | '-- Foo --help' => ['--help'], |
84 | }, |
85 | ); |
86 | |
87 | sub class_name { |
88 | my ($argv) = @_; |
89 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
90 | return $p->class_name; |
91 | } |
92 | |
93 | sub modules { |
94 | my ($argv) = @_; |
95 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
96 | return $p->modules; |
97 | } |
98 | |
99 | sub include_paths { |
100 | my ($argv) = @_; |
101 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
102 | return [ map { $_->stringify } $p->include_paths ]; |
103 | } |
104 | |
105 | sub plugins { |
106 | my ($argv) = @_; |
107 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
108 | return $p->plugins; |
109 | } |
110 | |
111 | sub is_help { |
112 | my ($argv) = @_; |
113 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
114 | return $p->is_help ? 1 : 0; |
115 | } |
116 | |
117 | sub app_args { |
118 | my ($argv) = @_; |
119 | my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] ); |
120 | return $p->app_args; |
121 | } |
122 | |
123 | runtests; |