Add the original source packages to maemo, source lenny
[dh-make-perl] / dev / i386 / libmodule-build-perl / libmodule-build-perl-0.2808.01 / t / lib / MBTest.pm
diff --git a/dev/i386/libmodule-build-perl/libmodule-build-perl-0.2808.01/t/lib/MBTest.pm b/dev/i386/libmodule-build-perl/libmodule-build-perl-0.2808.01/t/lib/MBTest.pm
new file mode 100644 (file)
index 0000000..6764daf
--- /dev/null
@@ -0,0 +1,167 @@
+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::More
+use 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 executables
+sub 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