Upgrade to MakeMaker 6.53_02
Rafael Garcia-Suarez [Mon, 8 Jun 2009 08:03:10 +0000 (10:03 +0200)]
39 files changed:
MANIFEST
lib/ExtUtils/Changes
lib/ExtUtils/Command/MM.pm
lib/ExtUtils/Liblist.pm
lib/ExtUtils/Liblist/Kid.pm
lib/ExtUtils/MM.pm
lib/ExtUtils/MM_AIX.pm
lib/ExtUtils/MM_Any.pm
lib/ExtUtils/MM_BeOS.pm
lib/ExtUtils/MM_Cygwin.pm
lib/ExtUtils/MM_DOS.pm
lib/ExtUtils/MM_Darwin.pm
lib/ExtUtils/MM_MacOS.pm
lib/ExtUtils/MM_NW5.pm
lib/ExtUtils/MM_OS2.pm
lib/ExtUtils/MM_QNX.pm
lib/ExtUtils/MM_UWIN.pm
lib/ExtUtils/MM_Unix.pm
lib/ExtUtils/MM_VMS.pm
lib/ExtUtils/MM_VOS.pm
lib/ExtUtils/MM_Win32.pm
lib/ExtUtils/MM_Win95.pm
lib/ExtUtils/MY.pm
lib/ExtUtils/MakeMaker.pm
lib/ExtUtils/MakeMaker/Config.pm
lib/ExtUtils/Mkbootstrap.pm
lib/ExtUtils/Mksymlists.pm
lib/ExtUtils/t/MM_Cygwin.t
lib/ExtUtils/t/arch_check.t
lib/ExtUtils/t/basic.t
lib/ExtUtils/t/fix_libs.t [new file with mode: 0644]
lib/ExtUtils/t/is_of_type.t [new file with mode: 0644]
lib/ExtUtils/t/miniperl.t [new file with mode: 0644]
lib/ExtUtils/t/pm_to_blib.t [new file with mode: 0644]
lib/ExtUtils/t/pod2man.t
lib/ExtUtils/t/xs.t
lib/ExtUtils/testlib.pm
t/lib/MakeMaker/Test/NoXS.pm [new file with mode: 0644]
t/lib/MakeMaker/Test/Utils.pm

index c4d43cf..cc17868 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2200,6 +2200,7 @@ lib/ExtUtils/testlib.pm           Fixes up @INC to use just-built extension
 lib/ExtUtils/t/eu_command.t    See if ExtUtils::Command works
 lib/ExtUtils/t/FIRST_MAKEFILE.t                See if FIRST_MAKEFILE works
 lib/ExtUtils/t/fixin.t         See if ExtUtils::MakeMaker works
+lib/ExtUtils/t/fix_libs.t      Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/hints.t         See if hint files are honored.
 lib/ExtUtils/t/Installapi2.t   See if new api for ExtUtils::Install::install() works
 lib/ExtUtils/t/INSTALL_BASE.t  Test INSTALL_BASE in MakeMaker
@@ -2207,6 +2208,7 @@ lib/ExtUtils/t/Installed.t        See if ExtUtils::Installed works
 lib/ExtUtils/t/Install.t       See if ExtUtils::Install works
 lib/ExtUtils/t/INST_PREFIX.t   See if MakeMaker can apply PREFIXs
 lib/ExtUtils/t/INST.t          Check MakeMaker INST_* macros
+lib/ExtUtils/t/is_of_type.t    Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/Liblist.t       See if ExtUtils::Liblist works
 lib/ExtUtils/t/make.t          See if make detection works
 lib/ExtUtils/t/maketext_filter.t       See if maketext_filter works
@@ -2214,6 +2216,7 @@ lib/ExtUtils/t/Manifest.t See if ExtUtils::Manifest works
 lib/ExtUtils/t/metafile_data.t See if META.yml handling works
 lib/ExtUtils/t/metafile_file.t See if META.yml handling works
 lib/ExtUtils/t/min_perl_version.t      Test the MIN_PERL_VERSION argument to WriteMakefile.
+lib/ExtUtils/t/miniperl.t      Test MakeMaker with miniperl
 lib/ExtUtils/t/Mkbootstrap.t   See if ExtUtils::Mkbootstrap works
 lib/ExtUtils/t/MM_Any.t                See if ExtUtils::MM_Any works
 lib/ExtUtils/t/MM_BeOS.t       See if ExtUtils::MM_BeOS works
@@ -2229,6 +2232,7 @@ lib/ExtUtils/t/Packlist.t See if Packlist works
 lib/ExtUtils/t/parse_version.t See if parse_version works
 lib/ExtUtils/t/PL_FILES.t      Test PL_FILES in MakeMaker
 lib/ExtUtils/t/pm.t            See if MakeMaker can handle PM
+lib/ExtUtils/t/pm_to_blib.t    Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/pod2man.t       See if MakeMaker can handle no pod2man
 lib/ExtUtils/t/postamble.t     See if postamble works
 lib/ExtUtils/t/prefixify.t     See if MakeMaker can apply a PREFIX
@@ -3986,6 +3990,7 @@ t/lib/locale/latin1               Part of locale.t in Latin 1
 t/lib/locale/utf8              Part of locale.t in UTF8
 t/lib/MakeMaker/Test/Setup/BFD.pm      MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/MPV.pm      MakeMaker test utilities
+t/lib/MakeMaker/Test/NoXS.pm           MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/PL_FILES.pm MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/Problem.pm  MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/Recurs.pm   MakeMaker test utilities
index ed008f5..b94843e 100644 (file)
@@ -1,7 +1,49 @@
+6.53_02  Sun Jun  7 19:24:56 PDT 2009
+    Test Fixes
+    * Stray use of Shell::Command broke older perls
+
+    Other
+    * MakeMaker will now automatically test itself with multiple
+      perl versions before releasing.
+
+
+6.53_01  Sun Jun  7 19:02:20 PDT 2009
+    Bug Fixes
+    * blib will now be rebuilt if the Makefile is changed
+      [rt.cpan.org 46658]
+    * 6.52 broke the setting of EXTRALIBS, LDLOADLIBS and BSLOADLIBS
+      when $self->{LIBS}[0] is undefined.
+      [rt.cpan.org 46633] (Craig Berry)
+
+    Cygwin
+    * Fixed MM_Cygwin.t when the path prefix (ie. cygdrive) has been
+      changed by the user. [rt.cpan.org 46585] (JDHEDDEN)
+
+    VMS
+    * Removed attempts to compensate for the "bin" logical added
+      by some versions of GNV, Craig says they're futile.
+      Put a warning into the Makefile.PL instead.
+      [rt.cpan.org 46679] (Craig Berry)
+    * Removed the arch_check() special case for VMS.
+      [rt.cpan.org 46678] (Craig Berry)
+
+    Win32
+    * Restore building the core by not trying to load the Win32
+      module in arch_check() with miniperl.
+      [rt.cpan.org 46667] (Max Maischein)
+
+    Tests
+    * Forgot to get rid of the tests for bytes and vmsish
+      which were removed in 6.51_01.
+    * Stopped running a Windows specific arch_check.t test
+      on non-Windows. (Craig Berry)
+      [rt.cpan.org 46678]
+
+
 6.52  Sat May 30 11:22:04 PDT 2009
     Docs
     * Documented CONFIGURE_REQUIRES (Alexandr Ciornii)
-    * Modnerized the docs for PREREQ_PM
+    * Modernized the docs for PREREQ_PM
 
 
 6.51_04  Sun May 24 14:04:11 PDT 2009
index 73cfd41..f893852 100644 (file)
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
 
 our @EXPORT  = qw(test_harness pod2man perllocal_install uninstall 
                   warn_if_old_packlist);
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 my $Is_VMS = $^O eq 'VMS';
 
index 691f204..58dadc0 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 use File::Spec;
 require ExtUtils::Liblist::Kid;
index 5bf9b15..ab89b32 100644 (file)
@@ -9,7 +9,7 @@ use 5.006;
 # Broken out of MakeMaker from version 4.11
 
 use strict;
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 
 use Config;
 use Cwd 'cwd';
index 4d2254b..2f74088 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::Liblist;
 require ExtUtils::MakeMaker;
index 11673bf..12b83ae 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 4fde1fe..9ec3e06 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 use Carp;
 use File::Spec;
@@ -109,6 +109,22 @@ sub os_flavor_is {
 }
 
 
+=head3 can_load_xs
+
+    my $can_load_xs = $self->can_load_xs;
+
+Returns true if we have the ability to load XS.
+
+This is important because miniperl, used to build XS modules in the
+core, can not load XS.
+
+=cut
+
+sub can_load_xs {
+    return defined &DynaLoader::boot_DynaLoader ? 1 : 0;
+}
+
+
 =head3 split_command
 
     my @cmds = $MM->split_command($cmd, @args);
@@ -1773,15 +1789,9 @@ CODE
 
     $self->{LD_RUN_PATH} = "";
 
-    # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS}
-    # Lets look at $self->{LIBS} carefully: It may be an anon array, a string or
-    # undefined. In any case we turn it into an anon array:
-
-    # May check $Config{libs} too, thus not empty.
-    $self->{LIBS} = [$self->{LIBS}] unless ref $self->{LIBS};
-
-    $self->{LIBS} = [''] unless @{$self->{LIBS}} && defined $self->{LIBS}[0];
+    $self->{LIBS} = $self->_fix_libs($self->{LIBS});
 
+    # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS}
     foreach my $libs ( @{$self->{LIBS}} ){
         $libs =~ s/^\s*(.*\S)\s*$/$1/; # remove leading and trailing whitespace
         my(@libs) = $self->extliblist($libs);
@@ -1820,6 +1830,18 @@ CODE
 }
 
 
+# Lets look at $self->{LIBS} carefully: It may be an anon array, a string or
+# undefined. In any case we turn it into an anon array
+sub _fix_libs {
+    my($self, $libs) = @_;
+
+    return !defined $libs       ? ['']          : 
+           !ref $libs           ? [$libs]       :
+           !defined $libs->[0]  ? ['']          :
+                                  $libs         ;
+}
+
+
 =head3 tools_other
 
     my $make_frag = $MM->tools_other;
index 2b35e32..34d6258 100644 (file)
@@ -26,7 +26,7 @@ require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 
 =item os_flavor
index a0a7d40..3929ceb 100644 (file)
@@ -9,7 +9,7 @@ require ExtUtils::MM_Unix;
 require ExtUtils::MM_Win32;
 our @ISA = qw( ExtUtils::MM_Unix );
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 
 =head1 NAME
index e9ac41e..03537cc 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index 3489730..cbbdf6c 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 
 =head1 NAME
index fbdf0ce..64173ce 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 
 sub new {
     die <<'UNSUPPORTED';
index 803b08a..0c12905 100644 (file)
@@ -22,7 +22,7 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
index 17e7163..3c0bea9 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index 4233d93..a4eae59 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 5c84591..d89b47c 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 1208ccf..82bb654 100644 (file)
@@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '6.52';
+$VERSION = '6.53_02';
 
 require ExtUtils::MM_Any;
 our @ISA = qw(ExtUtils::MM_Any);
@@ -2800,7 +2800,7 @@ sub pm_to_blib {
     my $self = shift;
     my($autodir) = $self->catdir('$(INST_LIB)','auto');
     my $r = q{
-pm_to_blib : $(TO_INST_PM)
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
 };
 
     # VMS will swallow '' and PM_FILTER is often empty.  So use q[]
index 2b4f1a3..16cc0f7 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -1565,19 +1565,6 @@ map_clean :
 }
 
 
-=item arch_check (override)
-
-vmsify all arguments for consistency
-
-=cut
-
-sub arch_check {
-    my $self = shift;
-
-    return $self->SUPER::arch_check(map { vmsify($_) } @_);
-}
-
-
 # --- Output postprocessing section ---
 
 =item maketext_filter (override)
index fd4f8c4..686245c 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 2a15502..4b9e9b8 100644 (file)
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw( neatvalue );
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
 
@@ -414,6 +414,10 @@ Normalize all arguments for consistency of comparison.
 sub arch_check {
     my $self = shift;
 
+    # Win32 is an XS module, minperl won't have it.
+    # arch_check() is not critical, so just fake it.
+    return 1 unless $self->can_load_xs;
+
     require Win32;
     return $self->SUPER::arch_check( map { lc Win32::GetShortPathName($_) } @_);
 }
index 4467ba1..cd7afe8 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
index 7e80a95..23f4108 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 our @ISA = qw(ExtUtils::MM);
 
 {
index 67655ef..33665f2 100644 (file)
@@ -18,7 +18,7 @@ our @Overridable;
 my @Prepend_parent;
 my %Recognized_Att_Keys;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 # Emulate something resembling CVS $Revision$
 (our $Revision = $VERSION) =~ s{_}{};
@@ -123,7 +123,7 @@ sub _verify_att {
 
         my @sigs   = ref $sig ? @$sig : $sig;
         my $given  = ref $val;
-        unless( grep { $given eq $_ || ($_ && eval{$val->isa($_)}) } @sigs ) {
+        unless( grep { _is_of_type($val, $_) } @sigs ) {
             my $takes = join " or ", map { _format_att($_) } @sigs;
 
             my $has = _format_att($given);
@@ -134,6 +134,19 @@ sub _verify_att {
 }
 
 
+# Check if a given thing is a reference or instance of $type
+sub _is_of_type {
+    my($thing, $type) = @_;
+
+    return 1 if ref $thing eq $type;
+
+    local $SIG{__DIE__};
+    return 1 if eval{ $thing->isa($type) };
+
+    return 0;
+}
+
+
 sub _format_att {
     my $given = shift;
     
index 9b60e77..b9859ed 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 use Config ();
 
index f6606cf..5f8ae47 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap;
 # There's just too much Dynaloader incest here to turn on strict vars.
 use strict 'refs';
 
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 require Exporter;
 our @ISA = ('Exporter');
index e3e866e..5aa6ef7 100644 (file)
@@ -10,7 +10,7 @@ use Config;
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(&Mksymlists);
-our $VERSION = '6.52';
+our $VERSION = '6.53_02';
 
 sub Mksymlists {
     my(%spec) = @_;
index 7ce380c..36ada35 100644 (file)
@@ -103,31 +103,23 @@ like( $res, qr/pure_all.*foo.*foo.1/s, '... should add MAN3PODS targets' );
 
 SKIP: {
     my $comspec = $ENV{COMSPEC};
+    skip(q[$ENV{COMSPEC} does not exist], 1) unless $comspec;
 
-    skip("\$ENV{COMSPEC} does not exist", 3) unless $comspec;
+    $comspec = Cygwin::win_to_posix_path($comspec);
 
-    # Convert into cygwin-flavoured '/cygdrive/c/...' path.
-    # Is there a better way than direct munging?  A File::*
-    # module perhaps?
-
-    $comspec =~ s{^(\w):}  {/cygdrive/\l$1}x;
-    $comspec =~ s{\\    }  {/}gx;
-
-    ok(MM->maybe_command($comspec),"$comspec should be executable");
-
-    # /cygdrive/c should *never* be executable, it's a directory. 
+    ok MM->maybe_command($comspec), qq{'$comspec' should be executable"};
+}
 
-    ok(! MM->maybe_command(q{/cygdrive/c}), 
-       qq{/cygdrive/c should never be executable}
-    );
+# 'C:/' should *never* be executable, it's a directory.
+{
+    my $cdrive = Cygwin::win_to_posix_path("C:/");
 
-    # Our copy of Perl (with a unix-path) should always be executable.
+    ok !MM->maybe_command($cdrive), qq{'$cdrive' should never be executable};
+}
 
-    ok(MM->maybe_command($Config{perlpath}),
-       qq{$Config{perlpath} should be executable}
-    );
+# Our copy of Perl (with a unix-path) should always be executable.
+ok MM->maybe_command($Config{perlpath}), qq{'$Config{perlpath}' should be executable};
 
-}
 
 package FakeOut;
 
index a4fe88b..e4b3aef 100644 (file)
@@ -1,12 +1,5 @@
 #!/usr/bin/perl -w
 
-BEGIN {
-    if ($ENV{PERL_CORE}) {
-        chdir 't' if -d 't';
-        @INC = qw(../lib lib);
-    }
-}
-
 use strict;
 use lib 't/lib';
 
@@ -52,8 +45,9 @@ if you have problems building this extension.
 
 # Different file path separators [rt.cpan.org 46416]
 SKIP: {
-    skip "Can't load File::Spec::Win32" unless eval "require File::Spec::Win32";
-    local @File::Spec::ISA = qw(File::Spec::Win32);
+    require File::Spec;
+    skip "Win32 test", 1 unless File::Spec->isa("File::Spec::Win32");
+
     ok $mm->arch_check(
         "/_64/perl1004/lib/Config.pm",
         '\\_64\\perl1004\\lib\\Config.pm',
@@ -63,6 +57,9 @@ SKIP: {
 
 # PERL_SRC is set, no check is done
 {
+    # Clear our log
+    $stdout->read;
+
     local $mm->{PERL_SRC} = 1;
     ok $mm->arch_check(
       $rel2abs->(qw(. t testdata reallylongdirectoryname arch1 Config.pm)),
index afd5fae..67d39f5 100644 (file)
@@ -24,16 +24,9 @@ use File::Find;
 use File::Spec;
 use File::Path;
 
-# 'make disttest' sets a bunch of environment variables which interfere
-# with our testing.
-delete @ENV{qw(PREFIX LIB MAKEFLAGS)};
-
 my $perl = which_perl();
 my $Is_VMS = $^O eq 'VMS';
 
-# GNV logical interferes with testing
-local $ENV{'bin'} = '[.bin]' if $Is_VMS;
-
 chdir 't';
 
 perl_lib;
diff --git a/lib/ExtUtils/t/fix_libs.t b/lib/ExtUtils/t/fix_libs.t
new file mode 100644 (file)
index 0000000..c683fc5
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/perl -w
+
+# Unit test the code which fixes up $self->{LIBS}
+
+use strict;
+use lib 't/lib';
+use Test::More 'no_plan';
+
+use ExtUtils::MakeMaker;
+
+my @tests = (
+        # arg           # want
+    [   undef,          ['']    ],
+    [   "foo",          ['foo'] ],
+    [   [],             ['']    ],
+    [   ["foo"],        ['foo'] ],
+    [   [1, 2, 3],      [1, 2, 3] ],
+    [   [0],            [0]     ],
+    [   [''],           ['']    ],
+    [   "  ",           ['  ']  ],
+);
+
+for my $test (@tests) {
+    my($arg, $want) = @$test;
+
+    my $display = defined $arg ? $arg : "undef";
+    is_deeply( MM->_fix_libs($arg), $want, "fix_libs($display)" );
+}
diff --git a/lib/ExtUtils/t/is_of_type.t b/lib/ExtUtils/t/is_of_type.t
new file mode 100644 (file)
index 0000000..d123ee3
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+# Test _is_of_type()
+
+use strict;
+use ExtUtils::MakeMaker;
+
+use Test::More "no_plan";
+
+my $is_of_type = \&ExtUtils::MakeMaker::_is_of_type;
+
+my @tests = (
+    [23,                "",     1],
+    [[],                "",     0],
+    [{},                "",     0],
+    [[],                "HASH", 0],
+    [{},                "HASH", 1],
+    [bless({}, "Foo"),  "Foo",  1],
+    [bless({}, "Bar"),  "Foo",  0],
+    [bless([], "Foo"),  "",     0],
+    [bless([], "Foo"),  "HASH", 0],
+    [bless([], "Foo"),  "ARRAY", 1],
+);
+
+for my $test (@tests) {
+    my($thing, $type, $want) = @$test;
+
+    # [rt.cpan.org 41060]
+    local $SIG{__DIE__} = sub { fail("sigdie should be ignored") };
+    is !!$is_of_type->($thing, $type), !!$want, qq[_is_of_type($thing, '$type'): $want];
+}
diff --git a/lib/ExtUtils/t/miniperl.t b/lib/ExtUtils/t/miniperl.t
new file mode 100644 (file)
index 0000000..2334eb0
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -w
+
+# Test that we can build modules as miniperl.
+# This mostly means no XS modules.
+
+use strict;
+use lib 't/lib';
+
+use Test::More 'no_plan';
+
+BEGIN {
+    ok !$INC{"ExtUtils/MakeMaker.pm"}, "MakeMaker is not yet loaded";
+}
+
+# Disable all XS from here on
+use MakeMaker::Test::NoXS;
+
+use ExtUtils::MakeMaker;
+
+use MakeMaker::Test::Utils;
+use MakeMaker::Test::Setup::BFD;
+
+
+my $perl     = which_perl();
+my $makefile = makefile_name();
+my $make     = make_run();
+
+
+# Setup our test environment
+{
+    chdir 't';
+
+    perl_lib;
+
+    ok( setup_recurs(), 'setup' );
+    END {
+        ok( chdir File::Spec->updir );
+        ok( teardown_recurs(), 'teardown' );
+    }
+
+    ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) ||
+      diag("chdir failed: $!");
+}
+
+
+# Run make once
+{
+    run_ok(qq{$perl Makefile.PL});
+    run_ok($make);
+}
diff --git a/lib/ExtUtils/t/pm_to_blib.t b/lib/ExtUtils/t/pm_to_blib.t
new file mode 100644 (file)
index 0000000..66ef879
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/perl -w
+
+# Ensure pm_to_blib runs at the right times.
+
+use strict;
+use lib 't/lib';
+
+use Test::More 'no_plan';
+
+use ExtUtils::MakeMaker;
+
+use MakeMaker::Test::Utils;
+use MakeMaker::Test::Setup::BFD;
+
+
+my $perl     = which_perl();
+my $makefile = makefile_name();
+my $make     = make_run();
+
+
+# Setup our test environment
+{
+    chdir 't';
+
+    perl_lib;
+
+    ok( setup_recurs(), 'setup' );
+    END {
+        ok( chdir File::Spec->updir );
+        ok( teardown_recurs(), 'teardown' );
+    }
+
+    ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) ||
+      diag("chdir failed: $!");
+}
+
+
+# Run make once
+{
+    run_ok(qq{$perl Makefile.PL});
+    run_ok($make);
+
+    ok( -e "blib/lib/Big/Dummy.pm", "blib copied pm file" );
+}
+
+
+# Change a pm file, it should be copied.
+{
+    # Wait a couple seconds else our changed file will have the same timestamp
+    # as the blib file
+    sleep 2;
+
+    ok( open my $fh, ">>", "lib/Big/Dummy.pm" ) or die $!;
+    print $fh "Something else\n";
+    close $fh;
+
+    run_ok($make);
+    like slurp("blib/lib/Big/Dummy.pm"), qr/Something else\n$/;
+}
+
+
+# Rerun the Makefile.PL, pm_to_blib should rerun
+{
+    run_ok(qq{$perl Makefile.PL});
+
+    # XXX This is a fragile way to check that it reran.
+    like run_ok($make), qr/^Skip /ms;
+
+    ok( -e "blib/lib/Big/Dummy.pm", "blib copied pm file" );
+}
index fa533bd..1632234 100644 (file)
@@ -1,12 +1,5 @@
 #!/usr/bin/perl -w
 
-BEGIN {
-    if ($ENV{PERL_CORE}) {
-        chdir 't' if -d 't';
-        @INC = qw(../lib);
-    }
-}
-
 # Test our simulation of pod2man
 
 use strict;
index 398b84a..5a15190 100644 (file)
@@ -32,9 +32,6 @@ else {
 my $Is_VMS = $^O eq 'VMS';
 my $perl = which_perl();
 
-# GNV logical interferes with testing
-$ENV{'bin'} = '[.bin]' if $Is_VMS;
-
 chdir 't';
 
 perl_lib;
index 41eaf80..f4241de 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
 use strict;
 use warnings;
 
-our $VERSION = 6.52;
+our $VERSION = 6.53_02;
 
 use Cwd;
 use File::Spec;
diff --git a/t/lib/MakeMaker/Test/NoXS.pm b/t/lib/MakeMaker/Test/NoXS.pm
new file mode 100644 (file)
index 0000000..ef20e66
--- /dev/null
@@ -0,0 +1,14 @@
+package MakeMaker::Test::NoXS;
+
+# Disable all XS loading.
+
+use Carp;
+
+require DynaLoader;
+require XSLoader;
+
+no warnings 'redefine';
+*DynaLoader::bootstrap = sub { confess "Tried to load XS for @_"; };
+*XSLoader::load        = sub { confess "Tried to load XS for @_"; };
+
+1;
index 2e9e725..1fb4174 100644 (file)
@@ -7,8 +7,6 @@ use Config;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = 0.04;
-
 our $Is_VMS   = $^O eq 'VMS';
 our $Is_MacOS = $^O eq 'MacOS';
 
@@ -17,6 +15,7 @@ our @EXPORT = qw(which_perl perl_lib makefile_name makefile_backup
                  setup_mm_test_root
                  have_compiler slurp
                  $Is_VMS $Is_MacOS
+                 run_ok
                 );
 
 
@@ -29,6 +28,9 @@ our @EXPORT = qw(which_perl perl_lib makefile_name makefile_backup
         HARNESS_TIMER
         HARNESS_OPTIONS
         HARNESS_VERBOSE
+        PREFIX
+        LIB
+        MAKEFLAGS
     );
 
     # Remember the ENV values because on VMS %ENV is global
@@ -301,6 +303,27 @@ sub run {
     }
 }
 
+
+=item B<run_ok>
+
+  my @out = run_ok($cmd);
+
+Like run() but it tests that the result exited normally.
+
+The output from run() will be used as a diagnostic if it fails.
+
+=cut
+
+sub run_ok {
+    my $tb = Test::Builder->new;
+
+    my @out = run(@_);
+
+    $tb->cmp_ok( $?, '==', 0, "run(@_)" ) || $tb->diag(@out);
+
+    return wantarray ? @out : join "", @out;
+}
+
 =item B<setup_mm_test_root>
 
 Creates a rooted logical to avoid the 8-level limit on older VMS systems.