📄 40_cpanplus-internals-report.t
字号:
} { my $prereqs = REPORT_MISSING_PREREQS->('foo','bar@example.com','Foo::Bar'); ok( $prereqs, "Test output generated" ); like( $prereqs, qr/'foo \(bar\@example\.com\)'/, " Proper content found" ); like( $prereqs, qr/Foo::Bar/, " Proper content found" ); like( $prereqs, qr/prerequisi/, " Proper content found" ); like( $prereqs, qr/PREREQ_PM/, " Proper content found" ); } { my $prereqs = REPORT_MISSING_PREREQS->(undef,undef,'Foo::Bar'); ok( $prereqs, "Test output generated" ); like( $prereqs, qr/Your Name/, " Proper content found" ); like( $prereqs, qr/Foo::Bar/, " Proper content found" ); like( $prereqs, qr/prerequisi/, " Proper content found" ); like( $prereqs, qr/PREREQ_PM/, " Proper content found" ); } { my $missing = REPORT_MISSING_TESTS->(); ok( $missing, "Missing test string generated" ); like( $missing, qr/tests/, " Proper content found" ); like( $missing, qr/Test::More/, " Proper content found" ); } { my $missing = REPORT_MESSAGE_FOOTER->(); ok( $missing, "Message footer string generated" ); like( $missing, qr/NOTE/, " Proper content found" ); like( $missing, qr/identical/, " Proper content found" ); like( $missing, qr/mistaken/, " Proper content found" ); like( $missing, qr/appreciate/, " Proper content found" ); like( $missing, qr/Additional/, " Proper content found" ); } { my @libs = MISSING_EXTLIBS_LIST->("No library found for -lfoo\nNo library found for -lbar"); ok( @libs, "Missing external libraries found" ); my @list = qw(foo bar); is_deeply( \@libs, \@list, " Proper content found" ); } { my $clone = $Mod->clone; my $prereqs = { $ModPrereq => $HighVersion }; $clone->status->prereqs( $prereqs ); my $str = REPORT_LOADED_PREREQS->( $clone ); like($str, qr/PREREQUISITES:/, "Listed loaded prerequisites" ); like($str, qr/\! $ModPrereq\s+\S+\s+\S+/, " Proper content found" ); }}### callback tests{ ### as reported in bug 13086, this callback returned the wrong item ### from the list: ### $self->_callbacks->munge_test_report->($Mod, $message, $grade); my $rv = $CB->_callbacks->munge_test_report->( 1..4 ); is( $rv, 2, "Default 'munge_test_report' callback OK" );}### test creating test reports ###SKIP: { skip "You have chosen not to enable test reporting", $total_tests, unless $CB->configure_object->get_conf('cpantest'); skip "No report send & query modules installed", $total_tests unless $CB->_have_query_report_modules(verbose => 0); SKIP: { my $mod = $CB->module_tree( TEST_CONF_PREREQ ); # is released to CPAN ok( $mod, "Module retrieved" ); ### so we're not pinned down to this specific version of perl my @list = $mod->fetch_report( all_versions => 1 ); skip "Possibly no net connection, or server down", 7 unless @list; my $href = $list[0]; ok( scalar(@list), "Fetched test report" ); is( ref $href, ref {}, " Return value has hashrefs" ); ok( $href->{grade}, " Has a grade" ); ### XXX use constants for grades? like( $href->{grade}, qr/pass|fail|unknown|na/i, " Grade as expected" ); my $pkg_name = $mod->package_name; ok( $href->{dist}, " Has a dist" ); like( $href->{dist}, qr/$pkg_name/, " Dist as expected" ); ok( $href->{platform}, " Has a platform" ); } skip "No report sending modules installed", $send_tests unless $CB->_have_send_report_modules(verbose => 0); for my $type ( keys %$map ) { ### never enter the editor for test reports ### but check if the callback actually gets called; my $called_edit; my $called_send; $CB->_register_callback( name => 'edit_test_report', code => sub { $called_edit++; 0 } ); $CB->_register_callback( name => 'send_test_report', code => sub { $called_send++; 1 } ); ### reset from earlier tests $CB->_register_callback( name => 'munge_test_report', code => sub { return $_[1] } ); my $mod = $map->{$type}->{'pre_hook'} ? $map->{$type}->{'pre_hook'}->( $Mod ) : $Mod; my $file = $CB->_send_report( module => $mod, buffer => $map->{$type}{'buffer'}, failed => $map->{$type}{'failed'}, tests_skipped => ($map->{$type}{'skiptests'} ? 1 : 0), save => 1, dontcc => 1, # no need to send, and also skips # fetching reports from testers.cpan ); ok( $file, "Type '$type' written to file" ); ok( -e $file, " File exists" ); my $fh = FileHandle->new($file); ok( $fh, " Opened file for reading" ); my $in = do { local $/; <$fh> }; ok( $in, " File has contents" ); for my $regex ( @{$map->{$type}->{match}} ) { like( $in, $regex, " File contains expected contents" ); } ### check if our registered callback got called ### if( $map->{$type}->{check} ) { ok( $called_edit, " Callback to edit was called" ); ok( $called_send, " Callback to send was called" ); } #unlink $file;### T::R tests don't even try to mail, let's not try and be smarter### ourselves# { ### use a dummy 'editor' and see if the editor# ### invocation doesn't break things# $conf->set_program( editor => "$^X -le1" );# $CB->_callbacks->edit_test_report( sub { 1 } );## ### XXX whitebox test!!! Might change =/# ### this makes test::reporter not ask for what editor to use# ### XXX stupid lousy perl warnings;# local $Test::Reporter::MacApp = 1;# local $Test::Reporter::MacApp = 1;## ### now try and mail the report to a /dev/null'd mailbox# my $ok = $CB->_send_report(# module => $Mod,# buffer => $map->{$type}->{'buffer'},# failed => $map->{$type}->{'failed'},# address => NOBODY,# dontcc => 1,# );# ok( $ok, " Mailed report to NOBODY" );# } }}sub missing_prereq_buffer { return q[MAKE TEST:Can't locate floo.pm in @INC (@INC contains: /Users/kane/sources/p4/other/archive-extract/lib /Users/kane/sources/p4/other/file-fetch/lib /Users/kane/sources/p4/other/archive-tar-new/lib /Users/kane/sources/p4/other/carp-trace/lib /Users/kane/sources/p4/other/log-message/lib /Users/kane/sources/p4/other/module-load/lib /Users/kane/sources/p4/other/params-check/lib /Users/kane/sources/p4/other/qmail-checkpassword/lib /Users/kane/sources/p4/other/module-load-conditional/lib /Users/kane/sources/p4/other/term-ui/lib /Users/kane/sources/p4/other/ipc-cmd/lib /Users/kane/sources/p4/other/config-auto/lib /Users/kane/sources/NSA /Users/kane/sources/NSA/misc /Users/kane/sources/NSA/test /Users/kane/sources/beheer/perl /opt/lib/perl5/5.8.3/darwin-2level /opt/lib/perl5/5.8.3 /opt/lib/perl5/site_perl/5.8.3/darwin-2level /opt/lib/perl5/site_perl/5.8.3 /opt/lib/perl5/site_perl .).BEGIN failed--compilation aborted. ];}sub missing_tests_buffer { return q[cp lib/Acme/POE/Knee.pm blib/lib/Acme/POE/Knee.pmcp demo_race.pl blib/lib/Acme/POE/demo_race.plcp demo_simple.pl blib/lib/Acme/POE/demo_simple.plMAKE TEST:No tests defined for Acme::POE::Knee extension. ];}sub perl_version_too_low_buffer_mm { return q[Running [/usr/bin/perl5.8.1 Makefile.PL ]...Perl v5.8.3 required--this is only v5.8.1, stopped at Makefile.PL line 1.BEGIN failed--compilation aborted at Makefile.PL line 1.[ERROR] Could not run '/usr/bin/perl5.8.1 Makefile.PL': Perl v5.8.3 required--this is only v5.8.1, stopped at Makefile.PL line 1.BEGIN failed--compilation aborted at Makefile.PL line 1. -- cannot continue ];} sub perl_version_too_low_buffer_build { my $type = shift; return q[ERROR: perl: Version 5.006001 is installed, but we need version >= 5.008001ERROR: version: Prerequisite version isn't installedERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions of the modules indicated above before proceeding with this installation. ] if($type == 1); return q[ERROR: Version 5.006001 of perl is installed, but we need version >= 5.008001ERROR: version: Prerequisite version isn't installedERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions of the modules indicated above before proceeding with this installation. ] if($type == 2);} # 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 + -