X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F104_override_usage.t;h=8e7a1ff842d173694ae4a2453a51d1c394940fce;hb=c885acae4797dc3ce50e91445ceb96c971e87671;hp=be005bc13d016e24287a29be61fc3791ed28e15d;hpb=175b83f5692393946086f048dd8a0c1cdc28431b;p=gitmo%2FMooseX-Getopt.git diff --git a/t/104_override_usage.t b/t/104_override_usage.t index be005bc..8e7a1ff 100644 --- a/t/104_override_usage.t +++ b/t/104_override_usage.t @@ -1,7 +1,7 @@ use strict; use warnings; use Test::More 0.88; -use Test::Exception; +use Test::Trap; { package MyScript; @@ -10,22 +10,49 @@ use Test::Exception; with 'MooseX::Getopt'; has foo => ( isa => 'Int', is => 'ro', documentation => 'A foo' ); - has help => ( isa => 'Bool', is => 'ro', default => 0, documentation => 'Help'); our $usage = 0; before _getopt_full_usage => sub { $usage++; }; + our @warnings; + before _getopt_spec_warnings => sub { shift; push(@warnings, @_) }; + our @exception; + before _getopt_spec_exception => sub { shift; push(@exception, @{ shift() }, shift()) }; } { + local $MyScript::usage; local @MyScript::warnings; local @MyScript::exception; local @ARGV = ('--foo', '1'); my $i = MyScript->new_with_options; ok $i; is $i->foo, 1; - is $MyScript::usage, 0; + is $MyScript::usage, undef; } { + local $MyScript::usage; local @MyScript::warnings; local @MyScript::exception; local @ARGV = ('--help'); - throws_ok { MyScript->new_with_options } qr/A foo/; + trap { MyScript->new_with_options }; + like($trap->stdout, qr/A foo/); is $MyScript::usage, 1; } +{ + local $MyScript::usage; local @MyScript::warnings; local @MyScript::exception; + local @ARGV = ('-q'); # Does not exist + trap { MyScript->new_with_options }; + like($trap->die, qr/A foo/); + is_deeply \@MyScript::warnings, [ + 'Unknown option: q +' + ]; + my $exp = [ + 'Unknown option: q +', + qq{usage: 104_override_usage.t [-?] [long options...] +\t-? --usage --help Prints this usage information. +\t--foo A foo +} + ]; + + is_deeply \@MyScript::exception, $exp; +} + done_testing;