fix a bug found via $work_app
[gitmo/MooseX-Runnable.git] / t / arg-parser.t
CommitLineData
2503822b 1use strict;
2use warnings;
3
4use MooseX::Runnable::Util::ArgParser;
5
6use 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
92sub class_name {
93 my ($argv) = @_;
94 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
95 return $p->class_name;
96}
97
98sub modules {
99 my ($argv) = @_;
100 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
101 return $p->modules;
102}
103
104sub 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
110sub plugins {
111 my ($argv) = @_;
112 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
113 return $p->plugins;
114}
115
116sub 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
122sub app_args {
123 my ($argv) = @_;
124 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
125 return $p->app_args;
126}
127
128runtests;