File: merge.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 (81 lines) | stat: -rw-r--r-- 1,437 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
use Test::More;
use Test::Exception;

use lib 'lib';
use lib '../lib';

use Getopt::ArgParse;

$common_parser = Getopt::ArgParse->new_parser();

$common_parser->add_argument(
    '--dry-run',
    type => 'Bool',
);

$parser = Getopt::ArgParse->new_parser();

$parser->add_arguments(
    [ '--foo' ],
);

$parser->add_subparsers();

$sp = $parser->add_parser('list');

$sp->copy_args($common_parser);

$sp = $parser->add_parser('copy');

$sp->copy_args($common_parser);

$n = $parser->parse_args('list', '--dry-run');

ok($n->dry_run, 'dry-run');

$n = $parser->parse_args('copy', '');

ok($n->no_dry_run, 'no dry-run');

throws_ok(
    sub { $parser->parse_args('--dry-run'); },
    qr/Unknown option: dry-run/,
    'unknown option',
);

# copy parsers
$parser1 = Getopt::ArgParse->new_parser(
    prog => 'parser1',
);

$parser1->copy_parsers($parser);

throws_ok(
    sub { $parser1->parse_args('--foo 123'); },
    qr/Unknown option: foo/,
    'unknown option: foo',
);

$n = $parser1->parse_args('list', '--dry-run');

ok($n->dry_run, 'parse1: dry-run');

$n = $parser1->parse_args('copy', '');

ok($n->no_dry_run, 'parse1: no dry-run');

# copy parsers
$parser2 = Getopt::ArgParse->new_parser(
    prog => 'parser2',
    parents => [ $parser ],
);

$n = $parser2->parse_args('list', '--dry-run');

ok($n->dry_run, 'parse2: dry-run');

$n = $parser2->parse_args('copy', '');

ok($n->no_dry_run, 'parse2: no dry-run');

done_testing;