use autoclean
[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',
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
87sub class_name {
88 my ($argv) = @_;
89 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
90 return $p->class_name;
91}
92
93sub modules {
94 my ($argv) = @_;
95 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
96 return $p->modules;
97}
98
99sub 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
105sub plugins {
106 my ($argv) = @_;
107 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
108 return $p->plugins;
109}
110
111sub 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
117sub app_args {
118 my ($argv) = @_;
119 my $p = MooseX::Runnable::Util::ArgParser->new( argv => [split / /, $argv] );
120 return $p->app_args;
121}
122
123runtests;