⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 19_cpanplus-dist.t

📁 source of perl for linux application,
💻 T
📖 第 1 页 / 共 2 页
字号:
### make sure we can find our conf.pl fileBEGIN {     use FindBin;     require "$FindBin::Bin/inc/conf.pl";}### dummy class for testing dist api ###BEGIN {    package CPANPLUS::Dist::_Test;    use strict;    use vars qw[$Available $Create $Install $Init $Prepare @ISA];    @ISA        = qw[CPANPLUS::Dist];    $Available  = 1;    $Create     = 1;    $Install    = 1;    $Init       = 1;    $Prepare    = 1;    require CPANPLUS::Dist;    CPANPLUS::Dist->_add_dist_types( __PACKAGE__ );    sub init                { $_[0]->status->mk_accessors(                                 qw[prepared created installed                                   _prepare_args _install_args _create_args]);                              return $Init };    sub format_available    { return $Available }    sub prepare             { return shift->status->prepared(  $Prepare ) }    sub create              { return shift->status->created(   $Create  ) }    sub install             { return shift->status->installed( $Install ) }}use strict;use CPANPLUS::Configure;use CPANPLUS::Backend;use CPANPLUS::Internals::Constants;use Test::More 'no_plan';use Cwd;use Data::Dumper;use File::Basename ();use File::Spec ();use Module::Load::Conditional qw[check_install];my $conf = gimme_conf();my $cb   = CPANPLUS::Backend->new( $conf );### obsolete#my $Format = '_test';my $Module      = 'CPANPLUS::Dist::_Test';my $ModName     = TEST_CONF_MODULE; my $ModPrereq   = TEST_CONF_INST_MODULE;### XXX this version doesn't exist, but we don't check for it either ###my $Prereq      = { $ModPrereq => '1000' };### since it's in this file, not in it's own module file,### make M::L::C think it already was loaded$Module::Load::Conditional::CACHE->{$Module}->{usable} = 1;use_ok('CPANPLUS::Dist');### start with fresh sources ###ok( $cb->reload_indices( update_source => 0 ),                                "Rebuilding trees" );my $Mod  = $cb->module_tree( $ModName );ok( $Mod,                       "Got module object" );### straight forward dist build - prepare, create, install{   my $dist = CPANPLUS::Dist->new(                            format  => $Module,                            module  => $Mod                        );    ok( $dist,                  "New dist object created" );    isa_ok( $dist,              'CPANPLUS::Dist' );    isa_ok( $dist,              $Module );    my $status = $dist->status;    ok( $status,                "Status object found" );    isa_ok( $status,            "Object::Accessor" );    ok( $dist->prepare,         "Prepare call" );    ok( $dist->status->prepared,"   Status registered OK" );    ok( $dist->create,          "Create call" );    ok( $dist->status->created, "   Status registered OK" );    ok( $dist->install,         "Install call" );    ok( $dist->status->installed,                                "   Status registered OK" );}### check 'sanity check' option ###{   local $CPANPLUS::Dist::_Test::Available = 0;    ok( !$Module->format_available,                                "Format availabillity turned off" );    {   $conf->_set_build('sanity_check' => 0);        my $dist = CPANPLUS::Dist->new(                                format => $Module,                                module => $Mod                            );        ok( $dist,              "Dist created with sanity check off" );        isa_ok( $dist,          $Module );    }    {   $conf->_set_build('sanity_check' => 1);        my $dist = CPANPLUS::Dist->new(                                format => $Module,                                module => $Mod                            );        ok( !$dist,             "Dist not created with sanity check on" );        like( CPANPLUS::Error->stack_as_string,                qr/Format '$Module' is not available/,                                "   Error recorded as expected" );    }}### undef the status hash, make sure it complains ###{   local $CPANPLUS::Dist::_Test::Init = 0;    my $dist = CPANPLUS::Dist->new(                        format => $Module,                        module => $Mod                    );    ok( !$dist,                 "No dist created by failed init" );    like( CPANPLUS::Error->stack_as_string,            qr/Dist initialization of '$Module' failed for/s,                                "   Error recorded as expected" );}### test _resolve prereqs, in a somewhat simulated set of circumstances{   my $old_prereq = $conf->get_conf('prereqs');        my $map = {        0 => {            'Previous install failed' => [                sub { $cb->module_tree($ModPrereq)->status->installed(0);                                                                'install' },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/failed to install before in this session/s,                            "   Previous install failed recorded ok" ) },            ],            "Set $Module->prepare to false" => [                sub { $CPANPLUS::Dist::_Test::Prepare = 0;       'install' },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Unable to create a new distribution object/s,                            "   Dist creation failed recorded ok" ) },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Failed to install '$ModPrereq' as prerequisite/s,                            "   Dist creation failed recorded ok" ) },            ],            "Set $Module->create to false" => [                sub { $CPANPLUS::Dist::_Test::Create = 0;       'install' },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Unable to create a new distribution object/s,                            "   Dist creation failed recorded ok" ) },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Failed to install '$ModPrereq' as prerequisite/s,                            "   Dist creation failed recorded ok" ) },            ],            "Set $Module->install to false" => [                sub { $CPANPLUS::Dist::_Test::Install = 0;      'install' },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Failed to install '$ModPrereq' as/s,                            "   Dist installation failed recorded ok" ) },            ],            "Set dependency to be perl-core" => [                sub { $cb->module_tree( $ModPrereq )->package(                                        'perl-5.8.1.tar.gz' );  'install' },                sub { like( CPANPLUS::Error->stack_as_string,                      qr/Prerequisite '$ModPrereq' is perl-core/s,                            "   Dist installation failed recorded ok" ) },            ],            'Simple ignore'     => [                sub { 'ignore' },                sub { ok( !$_[0]->status->prepared,                            "   Module status says not prepared" ) },                sub { ok( !$_[0]->status->created,                            "   Module status says not created" ) },                sub { ok( !$_[0]->status->installed,                            "   Module status says not installed" ) },            ],            'Ignore from conf'  => [                sub { $conf->set_conf(prereqs => PREREQ_IGNORE);    '' },                sub { ok( !$_[0]->status->prepared,                            "   Module status says not prepared" ) },                sub { ok( !$_[0]->status->created,                            "   Module status says not created" ) },                sub { ok( !$_[0]->status->installed,                            "   Module status says not installed" ) },                ### set the conf back ###

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -