File: usage.t

package info (click to toggle)
libgetopt-argparse-perl 1.0.6-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 348 kB
  • sloc: perl: 1,133; makefile: 2
file content (143 lines) | stat: -rw-r--r-- 4,085 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
use lib "lib";
use Test::More; # tests => 4;
use Test::Exception;

use Getopt::ArgParse::Parser;

my $parser = Getopt::ArgParse::Parser->new(
    prog => 'usage.t',
    description => 'This is the suite that contains usage message test cases',
);

ok($parser);

$parser->add_argument('--foo', '-f');

$parser->add_argument('--boo', type => 'Bool');

$parser->add_argument('--nboo', type => 'Bool');

$parser->add_argument('--verbose', '-v', type => 'Bool');

throws_ok (
    sub { $parser->add_argument('--verbose', type => 'Count'); },
    qr/Redefine option verbose without reset/,
    'redefine option'
);

$parser->add_argument('--verbose', type => 'Count', reset => 1);
$parser->add_argument('--email', required => 1);

$parser->add_argument('--email2', '--e2', required => 1);

throws_ok(
  sub {  $parser->add_argument('boo', required => 1); },
  qr/used by an optional/,
  'dest=boo is used',
);

$parser->add_argument('boo', required => 1, dest => 'boo_post');

$parser->add_argument('boo2', type => 'Pair', required => 1, default => { a => 1, 3 => 90 });


# subcommands

$parser->add_subparsers(title => 'Some subcommands', description => 'there are some subcommands');

$sp = $parser->add_parser(
    'list',
    aliases => [qw(ls)],
    help => 'this is the list subcommand message',
    description =><<'EOS',
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac
diam iaculis, consectetur nunc sit amet, vulputate lacus. Suspendisse
vitae felis nisl. Sed posuere aliquet placerat. Nunc eget sollicitudin
eros, quis porta nunc. Mauris laoreet lacinia aliquet. Cras porttitor
erat ac elit semper blandit. Vestibulum porttitor nulla id nisl
eleifend venenatis. In hac habitasse platea dictumst. Cras ut leo
rhoncus, bibendum lectus at, hendrerit tortor. Etiam congue ligula
magna, nec malesuada lorem semper ac.

Sed luctus malesuada felis, in mollis lectus aliquam ut. Ut adipiscing
massa id felis interdum semper sit amet in leo. Morbi imperdiet
fringilla sodales. Donec at ipsum eu lorem lacinia pharetra eu non
quam. Duis a porttitor nulla. In hac habitasse platea dictumst. Aenean
hendrerit sit amet quam nec malesuada. Vivamus lobortis placerat diam,
a lobortis ante sollicitudin vel. Cras ullamcorper enim urna, non
dignissim velit iaculis id. Sed odio libero, hendrerit sed blandit
eget, luctus ut velit. Suspendisse lobortis ullamcorper magna at
tincidunt. In hac habitasse platea dictumst. Curabitur accumsan, massa
vitae rutrum euismod, quam purus ultrices lectus, sed sodales metus
sem sed nulla. Vestibulum tincidunt ligula eget enim pulvinar, non
condimentum turpis dignissim. Maecenas sed nulla eu lorem dictum
semper. Nulla fringilla egestas nibh vitae blandit.

In vitae arcu accumsan turpis commodo varius. Pellentesque id massa
ligula. Vestibulum pharetra, metus in semper rutrum, odio urna
vulputate magna, nec tristique sem arcu sit amet dui. Suspendisse nec
risus consequat, rhoncus tellus vitae, tincidunt augue. Suspendisse
cursus felis nulla, non luctus lorem pharetra quis. Nunc pulvinar
lectus enim, sit amet interdum felis ultrices vel. Vestibulum neque
metus, condimentum eget convallis nec, euismod vitae nunc. Proin
sagittis ullamcorper risus, vel rutrum turpis posuere eu.
EOS
);

$sp->add_argument(
    'name',
    help => 'positional NAME',
    required => 1
);

$sp->add_argument(
    'name2',
    help => 'positional NAME2',
);

$sp->add_argument(
    '--foo', '-f',
    help => 'subcommand foo',
);

$sp->add_argument(
    '--boo', '-b',
    help => 'subcommand boo',
    required => 1,
);

$parser->print_usage();

print STDERR $_, "\n" for @{ $parser->format_command_usage('ls') };

done_testing;

__END__

my $ns = $parser->parse_args(
    '-h',
    '-f', 100,
    '--verbose', 'left', '--verbose',
    '--email', 'a@b', 'c@b', 'a@b', 1, 2,
    '--verbose', 123, '--verbose',
    '--boo', 3,
    '-e2', 'e2@e2', 9999
);

$\ = "\n";

print $ns->foo;

print $ns->nboo;

print $ns->boo;

print $ns->verbose;

print "email: ", join(', ', $ns->email);

print "argv: ", join(', ', @{$parser->{-argv}});

done_testing;

1;