B-C
view release on metacpan or search on metacpan
t/modules.t view on Meta::CPAN
"$module_count: use $module generates non-zero binary")
or $module_passed = 0;
is($result, 0, "$module_count: use $module $opt exits with 0")
or $module_passed = 0;
$err =~ s/^Using .+blib\n//m if $] < 5.007;
like($stdout, qr/ok$/ms, "$module_count: use $module $opt gives expected 'ok' output");
#warn $stdout."\n" if $ENV{TEST_VERBOSE};
#warn $err."\n" if $ENV{TEST_VERBOSE};
unless ($stdout =~ /ok$/ms) { # crosscheck for a perlcc problem (XXX not needed anymore)
warn "crosscheck without perlcc\n" if $ENV{TEST_VERBOSE};
my ($r, $err1);
$module_passed = 0;
my $c_opt = $opts[$_];
@cmd = ($runperl,split(/ /,$Mblib),"-MO=C,$c_opt,-o$out_c",$out_pl);
#warn join(" ",@cmd."\n") if $ENV{TEST_VERBOSE};
($r, $stdout, $err1) = run_cmd(\@cmd, 60); # in secs
my $cc_harness = cc_harness();
@cmd = ($runperl,split(/ /,$Mblib." ".$cc_harness),,"-o$out",$out_c);
#warn join(" ",@cmd."\n") if $ENV{TEST_VERBOSE};
($r, $stdout, $err1) = run_cmd(\@cmd, 360); # in secs
@cmd = ($^O eq 'MSWin32' ? "$out" : "./$out");
#warn join(" ",@cmd."\n") if $ENV{TEST_VERBOSE};
($r, $stdout, $err1) = run_cmd(\@cmd, 20); # in secs
if ($stdout =~ /ok$/ms) {
$module_passed = 1;
diag "crosscheck that only perlcc $staticxs failed. With -MO=C + cc_harness => ok";
}
}
log_pass($module_passed ? "pass" : "fail", $module, $TODO);
if ($module_passed) {
$pass++;
} else {
diag "Failed: $cmd -e 'use $module; print \"ok\"'";
$fail++;
}
TODO: {
local $TODO = 'STDERR from compiler warnings in work' if $err;
is($err, '', "$module_count: use $module no error output compiling")
&& ($module_passed)
or log_err($module, $stdout, $err)
}
}
if ($do_test) {
TODO: {
local $TODO = 'all module tests';
`$runperl $Mblib -It -MCPAN -Mmodules -e "CPAN::Shell->testcc("$module")"`;
}
}
for ($out_pl, $out, $out_c, $out_c.".lst") {
unlink $_ if -f $_ ;
}
}}
}
if (!$ENV{PERL_CORE}) {
my $count = scalar @modules - $skip;
log_diag("$count / $module_count modules tested with B-C-${B::C::VERSION} - "
.$Config{usecperl}?"c":""."perl-$perlversion");
log_diag(sprintf("pass %3d / %3d (%s)", $pass, $count, percent($pass,$count)));
log_diag(sprintf("fail %3d / %3d (%s)", $fail, $count, percent($fail,$count)));
log_diag(sprintf("todo %3d / %3d (%s)", $todo, $fail, percent($todo,$fail)));
log_diag(sprintf("skip %3d / %3d (%s not installed)\n",
$skip, $module_count, percent($skip,$module_count)));
}
exit;
# t/todomod.pl
# for t in $(cat t/top100); do perl -ne"\$ARGV=~s/log.modules-//;print \$ARGV,': ',\$_ if / $t\s/" t/modules.t `ls log.modules-5.0*|grep -v .err`; read; done
# Moose was compilable with pre-ETHER releases, but then they forgot how phases
# should work in modules.
sub is_todo {
my $module = shift or die;
my $DEBUGGING = ($Config{ccflags} =~ m/-DDEBUGGING/);
# ---------------------------------------
#foreach(qw(
# ExtUtils::CBuilder
#)) { return 'overlong linking time' if $_ eq $module; }
if ($] < 5.007) { foreach(qw(
Sub::Name
Test::Simple
Test::Exception
Storable
Test::Tester
Test::NoWarnings
Moose
Test::Warn
Test::Pod
Test::Deep
FCGI
MooseX::Types
DateTime::TimeZone
DateTime
)) { return '5.6' if $_ eq $module; }}
if ($] >= 5.008004 and $] < 5.0080006) { foreach(qw(
Module::Pluggable
)) { return '5.8.5 CopFILE_set' if $_ eq $module; }}
if ($] <= 5.0080009) { foreach(qw(
IO::Socket
)) { return '5.8.9 empty Socket::AF_UNIX' if $_ eq $module; }}
# PMOP quoting fixed with 1.45_14
#if ($] < 5.010) { foreach(qw(
# DateTime
#)) { return '<5.10' if $_ eq $module; }}
# restricted v_string hash?
if ($] eq '5.010000') { foreach(qw(
IO
Path::Class
DateTime::TimeZone
)) { return '5.10.0 restricted hash/...' if $_ eq $module; }}
# fixed between v5.15.6-210-g5343a61 and v5.15.6-233-gfb7aafe
#if ($] > 5.015 and $] < 5.015006) { foreach(qw(
# B::Hooks::EndOfScope
#)) { return '> 5.15' if $_ eq $module; }}
#if ($] >= 5.018) { foreach(qw(
# ExtUtils::ParseXS
#)) { return '>= 5.18 #137 Eval-group not allowed at runtime' if $_ eq $module; }}
# DateTime fixed with 1.52_13
# stringify fixed with 1.52_18
if ($] >= 5.018) { foreach(qw(
Path::Class
)) { return '>= 5.18 #219 overload stringify regression' if $_ eq $module; }}
( run in 1.917 second using v1.01-cache-2.11-cpan-d8267643d1d )