whoami7 - Manager
:
/
root
/
.cpanm
/
latest-build
/
local-lib-2.000029
/
xt
/
Upload File:
files >> //root/.cpanm/latest-build/local-lib-2.000029/xt/cpan-bootstrap.t
use strict; use warnings; use Test::More 0.81_01; use ExtUtils::MakeMaker; use local::lib (); my $ll_core; BEGIN { $ll_core = local::lib->new->deactivate_all; my ($pm) = grep { -e } map { "$_/CPAN.pm" } @{ $ll_core->inc }; plan skip_all => qq{CPAN.pm not available in core perl} unless $pm; my $vd = my $v = MM->parse_version($pm) || 0; $v =~ tr/_//d; plan skip_all => qq{CPAN.pm $vd doesn't have built in local::lib support} if $v < 1.9600; plan tests => 2; } use lib 't/lib', 'xt/lib'; use File::Spec; use TempDir; use POSIX (); use Digest::SHA; use Digest::MD5; use Data::Dumper; use dist_util; my $local_cpan = mk_temp_dir('CPAN'); note "building fake cpan ($local_cpan)"; mkdir "$local_cpan/authors"; mkdir "$local_cpan/authors/id"; mkdir "$local_cpan/modules/"; my %modules; make_dist "$local_cpan/authors/id/local-lib-bootstrap.tar.gz"; $modules{'local::lib'} = 'local-lib-bootstrap.tar.gz'; for my $module (qw(ExtUtils::MakeMaker ExtUtils::Install Module::Build CPAN)) { (my $dist_name = $module) =~ s{::}{-}g; (my $file_name = "$module.pm") =~ s{::}{/}g; my ($real_mod) = grep -e, map { "$_/$file_name" } @{$ll_core->inc}; next unless $real_mod; my $dist = mk_temp_dir("$dist_name-fake"); writefile "$dist/Makefile.PL", <<"END_MAKEFILEPL"; use strict; use warnings; BEGIN { die "PERL_MM_OPT not set to local::lib" unless \$ENV{PERL_MM_OPT} && \$ENV{LOCAL_LIB_CPAN_TEST} && \$ENV{PERL_MM_OPT} =~ /\\Q\$ENV{LOCAL_LIB_CPAN_TEST}/; } use ExtUtils::MakeMaker; WriteMakefile(NAME => '$module'); END_MAKEFILEPL mkdir "$dist/lib"; my $dir = "$dist/lib"; my @parts = split /::/, $module; pop @parts; for my $part (@parts) { $dir .= "/$part"; mkdir $dir; } writefile "$dist/lib/$file_name", <<"END_PM"; package $module; \$VERSION = 9999; require "$real_mod"; END_PM tar $dist, "$local_cpan/authors/id/$dist_name-fake.tar.gz"; $modules{$module} = "$dist_name-fake.tar.gz"; } my %checksums; for my $file (values %modules) { my $full_file = "$local_cpan/authors/id/$file"; $checksums{$file} = { 'mtime' => POSIX::strftime('%Y-%M-%D', gmtime), 'size' => -s $full_file, 'md5' => Digest::MD5->new->addfile(do { open my $fh, '<', $full_file or die "$!"; $fh; })->hexdigest, 'sha256' => Digest::SHA->new(256)->addfile($full_file, 'b')->hexdigest, }; } writefile "$local_cpan/authors/id/CHECKSUMS", Data::Dumper->new([\%checksums], ['cksum'])->Indent(1)->Sortkeys(1)->Dump; writefile "$local_cpan/authors/01mailrc.txt.gz", <<'END_MAILRC'; alias LOCAL "Local <LOCAL>" END_MAILRC my $packages = join "\n", map "$_ 9999 $modules{$_}", sort keys %modules; writefile "$local_cpan/modules/02packages.details.txt.gz", <<"END_PACKAGES"; File: 02packages.details.txt URL: http://www.perl.com/CPAN/modules/02packages.details.txt Description: Package names found in directory authors/id/ Columns: package name, version, path Intended-For: Automated fetch routines, namespace documentation. Written-By: local::lib test Line-Count: 2 Last-Updated: Wed, 21 Oct 2015 22:41:02 GMT $packages END_PACKAGES writefile "$local_cpan/modules/03modlist.data.gz", <<"END_MODLIST"; File: 03modlist.data Description: Empty module list Modcount: 0 Written-By: PAUSE version 1.005 Date: Thu, 03 Apr 2014 04:17:11 GMT package CPAN::Modulelist; sub data { {} } 1; END_MODLIST my $home = mk_temp_dir('HOME'); my $ll_root = File::Spec->catdir($home, 'perl5'); my $cpan_url = do { my ($vol, $path) = File::Spec->splitpath($local_cpan, 1); my @dirs = File::Spec->splitdir($path); shift @dirs; unshift @dirs, $vol if length $vol; join '/', "file://", @dirs; }; my $out = do { my %env = $ll_core->build_environment_vars; $env{LOCAL_LIB_CPAN_TEST} = $ll_root; $env{HOME} = $home; $env{HOMEDRIVE} = undef; $env{HOMEPATH} = undef; $env{USERPROFILE} = undef; $env{PREFIX} = undef; $env{INSTALL_BASE} = undef; $env{MAKEFLAGS} = undef; $env{PASTHRU} = undef; $env{CPAN_MIRROR} = $cpan_url; $env{PERL_MM_USE_DEFAULT} = 1; local @ENV{keys %env} = values %env; delete $ENV{$_} for grep { !defined $env{$_} } keys %env; note "running CPAN.pm bootstrap"; cap_system local::lib::_perl, "xt/cpan-bootstrap.pl"; }; $out =~ /^#+\s*ENVIRONMENT\s*#+\s*\n(.*?)\n#+\s*END ENVIRONMENT\s*#+\s*\n/ms; my %env = "$1" =~ /^(\w+)\s*(.*)$/mg; $out =~ /^#+\s*INC\s*#+\s*\n(.*?)\n#+\s*END INC\s*#+\s*\n/ms; my @inc = "$1" =~ /([^\r\n]+)/g; my $failed; ok -e "$ll_root/lib/perl5/local/lib.pm", 'local::lib was installed' or $failed++; like $inc[0], qr{^\Q$ll_root\E}, 'local::lib was activated' or $failed++; diag $out if $failed;
Copyright ©2021 || Defacer Indonesia