Commit | Line | Data |
73038480 |
1 | |
2 | # The usage information prints the 'documentation' value for all Getopt |
3 | # attributes, except the order is not deterministic (rather, it uses the order |
4 | # in which the attributes are stored in the metaclass 'attributes' hash). |
5 | # Let's sort them by insertion order, which should lead to nicer output: |
6 | # If MooseX::Getopt is applied early, the help options will be on top |
7 | # the help options will always be on top (assuming this role is applied |
8 | # early), followed by options added by parent classes and roles, and then |
9 | # options added by this class. |
10 | |
11 | use strict; use warnings; |
9fbb5be9 |
12 | use Test::More tests => 2; |
13 | use Test::NoWarnings 1.04 ':early'; |
73038480 |
14 | |
15 | { |
16 | package MyClass; |
17 | use strict; use warnings; |
18 | use Moose; |
19 | with 'MooseX::Getopt'; |
20 | |
21 | has $_ => ( |
22 | is => 'ro', isa => 'Str', |
23 | traits => ['Getopt'], |
24 | documentation => 'Documentation for "' . $_ . '"', |
25 | ) foreach qw(foo bar baz); |
26 | } |
27 | |
28 | my $obj = MyClass->new_with_options(); |
29 | |
ce93a16f |
30 | my $expected = <<"USAGE"; |
8d396d8a |
31 | usage: 110_sort_usage_by_attr_order.t [-?h] [long options...] |
32 | \t-h -? --usage --help Prints this usage information. |
33 | \t--foo Documentation for "foo" |
34 | \t--bar Documentation for "bar" |
35 | \t--baz Documentation for "baz" |
73038480 |
36 | USAGE |
37 | |
38 | is($obj->usage->text, $expected, 'Usage text has nicely sorted options'); |