📄 19_cpanplus-dist.t
字号:
sub { $conf->set_conf(prereqs => PREREQ_INSTALL); }, ], }, 1 => { 'Simple create' => [ sub { 'create' }, sub { ok( $_[0]->status->prepared, " Module status says prepared" ) }, sub { ok( $_[0]->status->created, " Module status says created" ) }, sub { ok( !$_[0]->status->installed, " Module status says not installed" ) }, ], 'Simple install' => [ sub { 'install' }, sub { ok( $_[0]->status->prepared, " Module status says prepared" ) }, sub { ok( $_[0]->status->created, " Module status says created" ) }, sub { ok( $_[0]->status->installed, " Module status says installed" ) }, ], 'Install from conf' => [ sub { $conf->set_conf(prereqs => PREREQ_INSTALL); '' }, sub { ok( $_[0]->status->prepared, " Module status says prepared" ) }, sub { ok( $_[0]->status->created, " Module status says created" ) }, sub { ok( $_[0]->status->installed, " Module status says installed" ) }, ], 'Create from conf' => [ sub { $conf->set_conf(prereqs => PREREQ_BUILD); '' }, sub { ok( $_[0]->status->prepared, " Module status says prepared" ) }, sub { ok( $_[0]->status->created, " Module status says created" ) }, sub { ok( !$_[0]->status->installed, " Module status says not installed" ) }, ### set the conf back ### sub { $conf->set_conf(prereqs => PREREQ_INSTALL); }, ], 'Ask from conf' => [ sub { $cb->_register_callback( name => 'install_prerequisite', code => sub {1} ); $conf->set_conf(prereqs => PREREQ_ASK); '' }, sub { ok( $_[0]->status->prepared, " Module status says prepared" ) }, sub { ok( $_[0]->status->created, " Module status says created" ) }, sub { ok( $_[0]->status->installed, " Module status says installed" ) }, ### set the conf back ### sub { $conf->set_conf(prereqs => PREREQ_INSTALL); }, ], 'Ask from conf, but decline' => [ sub { $cb->_register_callback( name => 'install_prerequisite', code => sub {0} ); $conf->set_conf( prereqs => PREREQ_ASK); '' }, sub { ok( !$_[0]->status->installed, " Module status says not installed" ) }, sub { like( CPANPLUS::Error->stack_as_string, qr/Will not install prerequisite '$ModPrereq' -- Note/, " Install skipped, recorded ok" ) }, ### set the conf back ### sub { $conf->set_conf(prereqs => PREREQ_INSTALL); }, ], "Set recursive dependency" => [ sub { $cb->_status->pending_prereqs({ $ModPrereq => 1 }); 'install' }, sub { like( CPANPLUS::Error->stack_as_string, qr/Recursive dependency detected/, " Recursive dependency recorded ok" ) }, ], }, }; for my $bool ( sort keys %$map ) { diag("Running ". ($bool?'success':'fail') . " tests") if @ARGV; my $href = $map->{$bool}; while ( my($txt,$aref) = each %$href ) { ### reset everything ### ok( $cb->reload_indices( update_source => 0 ), "Rebuilding trees" ); $CPANPLUS::Dist::_Test::Available = 1; $CPANPLUS::Dist::_Test::Prepare = 1; $CPANPLUS::Dist::_Test::Create = 1; $CPANPLUS::Dist::_Test::Install = 1; CPANPLUS::Error->flush; $cb->_status->mk_flush; ### get a new dist from Text::Bastardize ### my $dist = CPANPLUS::Dist->new( format => $Module, module => $cb->module_tree( $ModName ), ); ### first sub returns target ### my $sub = shift @$aref; my $target = $sub->(); my $flag = $dist->_resolve_prereqs( format => $Module, force => 1, target => $target, prereqs => $Prereq ); is( !!$flag, !!$bool, $txt ); ### any extra tests ### $_->($cb->module_tree($ModPrereq)) for @$aref; } }}### prereq satisfied tests{ my $map = { # version regex 0 => undef, 1 => undef, 2 => qr/have to resolve/, }; my $mod = CPANPLUS::Module::Fake->new( module => $$, package => $$, path => $$, version => 1 ); ok( $mod, "Fake module created" ); is( $mod->version, 1, " Version set correctly" ); my $dist = CPANPLUS::Dist->new( format => $Module, module => $Mod ); ok( $dist, "Dist object created" ); isa_ok( $dist, $Module ); ### scope it for the locals { local $^W; # quell sub redefined warnings; ### is_uptodate will need to return false for this test local *CPANPLUS::Module::Fake::is_uptodate = sub { return }; local *CPANPLUS::Module::Fake::is_uptodate = sub { return }; CPANPLUS::Error->flush; ### it's satisfied while( my($ver, $re) = each %$map ) { my $rv = $dist->prereq_satisfied( version => $ver, modobj => $mod ); ok( 1, "Testing ver: $ver" ); is( $rv, undef, " Return value as expected" ); if( $re ) { like( CPANPLUS::Error->stack_as_string, $re, " Error as expected" ); } CPANPLUS::Error->flush; } }}### dist_types tests{ can_ok( 'CPANPLUS::Dist', 'dist_types' ); SKIP: { skip "You do not have Module::Pluggable installed", 2 unless check_install( module => 'Module::Pluggable' ); my @types = CPANPLUS::Dist->dist_types; ok( scalar(@types), " Dist types found" ); ok( grep( /_Test/, @types), " Found our _Test dist type" ); }}1;# Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -