protect @INC when re-invoking
[gitmo/MooseX-Runnable.git] / t / invocation-plugin-initargs.t
CommitLineData
2828ce0c 1use strict;
2use warnings;
3use Test::Exception;
86c248d8 4use Test::More tests => 6;
2828ce0c 5
6use MooseX::Runnable::Invocation;
7
8my $initargs;
9
10{ package Class;
11 use Moose;
12 with 'MooseX::Runnable';
13 sub run { 42 }
14}
15
16{ package Plugin;
17 use Moose::Role;
18 with 'MooseX::Runnable::Invocation::Plugin::Role::CmdlineArgs';
19
20 has 'init' => ( is => 'ro', required => 1 );
21
22 sub _build_initargs_from_cmdline {
23 my $class = shift;
24 $initargs = join ',', @_;
25 return { init => 'args' };
26 }
27}
28
86c248d8 29{ package Argless;
30 use Moose::Role;
31}
32
2828ce0c 33my $i;
34lives_ok {
35 $i = MooseX::Runnable::Invocation->new(
36 class => 'Class',
37 plugins => {
38 '+Plugin' => [qw/foo bar baz/],
39 },
40 );
41} 'created invocation without dying';
42
43ok $i, 'created invocation ok';
44ok $i->run, 'ran ok';
45is $initargs, 'foo,bar,baz', 'got initargs';
46
86c248d8 47throws_ok {
48 MooseX::Runnable::Invocation->new(
49 class => 'Class',
50 plugins => {
51 '+Argless' => ['args go here'],
52 },
53 );
54} qr/Perhaps/, 'argless + args = error';
2828ce0c 55
86c248d8 56lives_ok {
57 MooseX::Runnable::Invocation->new(
58 class => 'Class',
59 plugins => {
60 '+Argless' => [],
61 },
62 );
63} 'argless + no args = ok';