-
Notifications
You must be signed in to change notification settings - Fork 220
/
Copy pathcommand-compgen.t
85 lines (69 loc) · 2.48 KB
/
command-compgen.t
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
#!/usr/bin/env perl
use Test2::V0;
use Test2::Tools::Spec;
use FindBin;
use lib $FindBin::Bin;
use App::perlbrew;
require "test2_helpers.pl";
use PerlbrewTestHelpers qw( stdout_from );
$ENV{PERLBREW_DEBUG_COMPLETION} = 0;
my @perls = qw(
perl-5.12.3
perl-5.12.4
perl-5.14.1
perl-5.14.2
);
mock_perlbrew_install($_) for @perls;
{
no warnings 'redefine';
sub App::perlbrew::current_perl { "perl-5.12.3" }
}
describe "compgen command," => sub {
describe "when there is no args", sub {
it "displays a list of subcommands", sub {
my $app = App::perlbrew->new("compgen");
my $out = stdout_from { $app->run; };
my @subcommands = sort split ' ', $out;
is join(' ', @subcommands), join(' ', sort $app->commands());
};
};
describe "when there is a part of a subcommand", sub {
it "displays a list of l*", sub {
my $part = "l";
my $app = App::perlbrew->new("compgen", 1, 'perlbrew', $part);
my $out = stdout_from { $app->run; };
my @subcommands = sort split ' ', $out;
is join(' ', @subcommands),
join(' ', sort grep { /\A \Q$part\E /xms } $app->commands());
};
it "'versio[tab]' is completed as 'version'", sub {
my $part = "versio";
my $app = App::perlbrew->new("compgen", 1, 'perlbrew', $part);
my $out = stdout_from { $app->run; };
my @subcommands = sort split ' ', $out;
is join(' ', @subcommands),
join(' ', 'version');
};
};
foreach my $use(qw(use switch)) {
describe "given '$use' subcommand", sub {
it "'use [tab]' suggests a list of installed perls", sub {
my $app = App::perlbrew->new(
"compgen", 2, 'perlbrew', 'use');
my $out = stdout_from { $app->run; };
my @subcommands = sort split ' ', $out;
is join(' ', @subcommands),
join(' ', sort @perls);
};
it "'use 5.12 [tab]' suggests perls with /5\\.12/", sub {
my $app = App::perlbrew->new(
"compgen", 2, 'perlbrew', 'use', '5.12');
my $out = stdout_from { $app->run; };
my @subcommands = sort split ' ', $out;
is join(' ', @subcommands),
join(' ', sort( qw(perl-5.12.3 perl-5.12.4) ));
};
};
}
};
done_testing;