forked from miyagawa/cpanminus
/
Run.pm
33 lines (26 loc) · 794 Bytes
/
Run.pm
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
package xt::Run;
use strict;
use base qw(Exporter);
our @EXPORT = qw(run run_L last_build_log);
use Capture::Tiny qw(capture);
use File::Temp qw(tempdir);
my $executable = $ENV{FATPACKED_TEST} ? './cpanm' : './script/cpanm.PL';
delete $ENV{PERL_CPANM_OPT};
$ENV{PERL_CPANM_HOME} = tempdir(CLEANUP => 1);
sub run_L {
run("-L", "$ENV{PERL_CPANM_HOME}/perl5", @_);
}
sub run {
my @args = @_;
my @notest = $ENV{NOTEST} ? ("--notest") : ();
my($stdout, $stderr, $exit) = capture {
system($^X, $executable, @notest, "--quiet", "--reinstall", @args);
};
::diag($stderr) if $stderr;
return wantarray ? ($stdout, $stderr, $exit) : $stdout;
}
sub last_build_log {
open my $log, "<", "$ENV{PERL_CPANM_HOME}/latest-build/build.log";
join '', <$log>;
}
1;