X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F109_help_flag.t;h=33390de61a6bb6069408a608fe267a7d7fd4627f;hb=61f5803e6d7c23dd838ce9acbeaf7d51afb257d4;hp=af2165327ad7820a0709263ee42fcd78ca9f2af3;hpb=b94db4252590ac633f35977d38c3f0b48748b723;p=gitmo%2FMooseX-Getopt.git diff --git a/t/109_help_flag.t b/t/109_help_flag.t index af21653..33390de 100644 --- a/t/109_help_flag.t +++ b/t/109_help_flag.t @@ -1,5 +1,3 @@ -#!/usr/bin/env perl - # The documentation claims: # If Getopt::Long::Descriptive is installed and any of the following command # line params are passed (--help, --usage, --?), the program will exit with @@ -16,9 +14,12 @@ # This inconsistency is the underlying cause of RT#52474, RT#57683, RT#47865. +# Update: since 0.41, usage info is printed to stdout, not stderr. + use strict; use warnings; -use Test::More tests => 6; -use Test::Exception; +use Test::More tests => 23; +use Test::NoWarnings 1.04 ':early'; +use Test::Trap; { package MyClass; @@ -31,21 +32,29 @@ use Test::Exception; #Unknown option: ? #usage: test1.t -# after fix, prints this on stderr: +# after fix, prints this on stdout (formerly stderr): #usage: test1.t [-?] [long options...] # -? --usage --help Prints this usage information. -foreach my $args ( ['--help'], ['--usage'], ['--?'], ['-?'] ) +my $obj = MyClass->new_with_options; +ok($obj->meta->has_attribute('usage'), 'class has usage attribute'); +isa_ok($obj->usage, 'Getopt::Long::Descriptive::Usage'); +my $usage_text = $obj->usage->text; + +foreach my $args ( ['--help'], ['--usage'], ['--?'], ['-?'], ['-h'] ) { local @ARGV = @$args; - - throws_ok { MyClass->new_with_options() } - qr/^usage: (?:[\d\w]+)\Q.t [-?] [long options...]\E.^\t\Q-? --usage --help Prints this usage information.\E$/ms, - 'Help request detected; usage information properly printed'; + note "Setting \@ARGV to @$args"; + + trap { MyClass->new_with_options() }; + + is($trap->leaveby, 'exit', 'bailed with an exit code'); + is($trap->exit, 0, '...of 0'); + is( + $trap->stdout, + $usage_text, + 'Usage information printed to STDOUT', + ); + is($trap->stderr, '', 'there was no STDERR output'); } -# now call again, and ensure we got the usage info. -my $obj = MyClass->new_with_options(); -ok($obj->meta->has_attribute('usage'), 'class has usage attribute'); -isa_ok($obj->usage, 'Getopt::Long::Descriptive::Usage'); -