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

📄 mbtest.pm

📁 source of perl for linux application,
💻 PM
字号:
package MBTest;use strict;use File::Spec;use File::Path ();BEGIN {  # Make sure none of our tests load the users ~/.modulebuildrc file  $ENV{MODULEBUILDRC} = 'NONE';  # In case the test wants to use Test::More or our other bundled  # modules, make sure they can be loaded.  They'll still do "use  # Test::More" in the test script.  my $t_lib = File::Spec->catdir('t', 'bundled');  unless ($ENV{PERL_CORE}) {    push @INC, $t_lib; # Let user's installed version override  } else {    # We change directories, so expand @INC to absolute paths    # Also add .    @INC = (map(File::Spec->rel2abs($_), @INC), ".");    # we are in 't', go up a level so we don't create t/t/_tmp    chdir '..' or die "Couldn't chdir to ..";    push @INC, File::Spec->catdir(qw/lib Module Build/, $t_lib);    # make sure children get @INC pointing to uninstalled files    require Cwd;    $ENV{PERL5LIB} = File::Spec->catdir(Cwd::cwd(), 'lib');  }}use Exporter;use Test::More;use Config;use Cwd ();# We pass everything through to Test::Moreuse vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS $TODO);$VERSION = 0.01;@ISA = qw(Test::More); # Test::More isa Exporter@EXPORT = @Test::More::EXPORT;%EXPORT_TAGS = %Test::More::EXPORT_TAGS;# We have a few extra exports, but Test::More has a special import()# that won't take extra additions.my @extra_exports = qw(  stdout_of  stderr_of  stdout_stderr_of  slurp  find_in_path  check_compiler  have_module);push @EXPORT, @extra_exports;__PACKAGE__->export(scalar caller, @extra_exports);# XXX ^-- that should really happen in import()########################################################################{ # Setup a temp directory if it doesn't exist  my $cwd = Cwd::cwd;  my $tmp = File::Spec->catdir( $cwd, 't', '_tmp' . $$);  mkdir $tmp, 0777 unless -d $tmp;  sub tmpdir { $tmp }  END {    if(-d $tmp) {      File::Path::rmtree($tmp) or warn "cannot clean dir '$tmp'";    }  }}########################################################################{ # backwards compatible temp filename recipe adapted from perlfaq  my $tmp_count = 0;  my $tmp_base_name = sprintf("%d-%d", $$, time());  sub temp_file_name {    sprintf("%s-%04d", $tmp_base_name, ++$tmp_count)  }}########################################################################sub save_handle {  my ($handle, $subr) = @_;  my $outfile = temp_file_name();  local *SAVEOUT;  open SAVEOUT, ">&" . fileno($handle)    or die "Can't save output handle: $!";  open $handle, "> $outfile" or die "Can't create $outfile: $!";  eval {$subr->()};  open $handle, ">&SAVEOUT" or die "Can't restore output: $!";  my $ret = slurp($outfile);  1 while unlink $outfile;  return $ret;}sub stdout_of { save_handle(\*STDOUT, @_) }sub stderr_of { save_handle(\*STDERR, @_) }sub stdout_stderr_of {  my $subr = shift;  my ($stdout, $stderr);  $stdout = stdout_of ( sub {      $stderr = stderr_of( $subr )  });  return ($stdout, $stderr);}sub slurp {  my $fh = IO::File->new($_[0]) or die "Can't open $_[0]: $!";  local $/;  return scalar <$fh>;}# Some extensions we should know about if we're looking for executablessub exe_exts {  if ($^O eq 'MSWin32') {    return split($Config{path_sep}, $ENV{PATHEXT} || '.com;.exe;.bat');  }  if ($^O eq 'os2') {    return qw(.exe .com .pl .cmd .bat .sh .ksh);  }  return;}sub find_in_path {  my $thing = shift;    my @path = split $Config{path_sep}, $ENV{PATH};  my @exe_ext = exe_exts();  foreach (@path) {    my $fullpath = File::Spec->catfile($_, $thing);    foreach my $ext ( '', @exe_ext ) {      return "$fullpath$ext" if -e "$fullpath$ext";    }  }  return;}# returns ($have_c_compiler, $C_support_feature);sub check_compiler {  return (1,1) if $ENV{PERL_CORE};  local $SIG{__WARN__} = sub {};  my $mb = Module::Build->current;  $mb->verbose( 0 );  my $have_c_compiler;  stderr_of( sub {$have_c_compiler = $mb->have_c_compiler} );  return ($have_c_compiler, $mb->feature('C_support'));}sub have_module {  my $module = shift;  return eval "use $module; 1";}1;# vim:ts=2:sw=2:et:sta

⌨️ 快捷键说明

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