-
Notifications
You must be signed in to change notification settings - Fork 220
/
Copy pathcommand-make-shim.t
95 lines (75 loc) · 2.47 KB
/
command-make-shim.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
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env perl
use Test2::V0;
use Test2::Tools::Spec;
use File::Temp qw( tempdir );
use FindBin;
use lib $FindBin::Bin;
use App::perlbrew;
require "test2_helpers.pl";
use PerlbrewTestHelpers qw(read_file write_file);
mock_perlbrew_install("perl-5.36.1");
describe "App::perlbrew->make_shim()" => sub {
it "should show usage", sub {
mock_perlbrew_use("perl-5.36.1");
my $called = 0;
my $mock = mock 'App::perlbrew',
override => [
run_command_help => sub { $called++; "" }
];
ok(
lives {
my $app = $mock->class->new("make-shim");
$app->run;
},
"`make-shim` should not trigger any exceptions"
) or note($@);
is $called, 1, "`help` command should be running.";
};
};
describe "App::perlbrew->make_shim('foo')" => sub {
it "should err when perlbrew is off" => sub {
mock_perlbrew_off();
my $dir = tempdir();
chdir($dir);
ok dies {
my $app = App::perlbrew->new("make-shim", "foo");
$app->run();
}, qr(^ERROR:);
ok ! -f "foo", "foo is not produced";
};
it "should err when 'foo' already exists" => sub {
mock_perlbrew_use("perl-5.36.1");
my $dir = tempdir();
chdir($dir);
write_file ("foo", "hello");
ok dies {
my $app = App::perlbrew->new("make-shim", "foo");
$app->run();
}, qr(^ERROR:);
ok dies {
my $app = App::perlbrew->new("make-shim", "-o", "foo", "bar");
$app->run();
}, qr(^ERROR:);
};
it "should produce 'foo' in the current dir" => sub {
mock_perlbrew_use("perl-5.36.1");
my $dir = tempdir();
chdir($dir);
my $app = App::perlbrew->new("make-shim", "foo");
$app->run();
ok -f "foo", "foo is produced under current directory.";
my $shim_content = read_file("foo");
diag "\nThe content of shim:\n----\n$shim_content\n----\n";
};
it "should produce 'foo' in the current dir" => sub {
mock_perlbrew_use("perl-5.36.1");
my $dir = tempdir();
chdir($dir);
my $app = App::perlbrew->new("make-shim", "-o", "foo", "bar");
$app->run();
ok -f "foo", "foo is produced under current directory.";
my $shim_content = read_file("foo");
diag "\nThe content of shim:\n----\n$shim_content\n----\n";
};
};
done_testing;