Author: dagolden
Date: Fri Jun 19 16:52:10 2009
New Revision: 12868

Modified:
   Module-Build/trunk/Changes
   Module-Build/trunk/lib/Module/Build/Compat.pm
   Module-Build/trunk/t/compat.t

Log:
Fix module::Build::Compat and recursive test files (RT#39171)

Thank you Dave Rolsky for the patch.



Modified: Module-Build/trunk/Changes
==============================================================================
--- Module-Build/trunk/Changes  (original)
+++ Module-Build/trunk/Changes  Fri Jun 19 16:52:10 2009
@@ -7,6 +7,7 @@
  - ConfigData->feature() confirms that modules actually load successfully,
    not just that they are present. (RT#43557)
  - Module::Build::Compat handling of INSTALL*LIB (RT#43827)
+ - Module::Build::Compat and recursive test files (RT#39171)
 
  Other
  - On MSWin32, bumped File::Spec prereq to 3.30 for a variety of fixes

Modified: Module-Build/trunk/lib/Module/Build/Compat.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Compat.pm       (original)
+++ Module-Build/trunk/lib/Module/Build/Compat.pm       Fri Jun 19 16:52:10 2009
@@ -4,6 +4,7 @@
 use vars qw($VERSION);
 $VERSION = '0.33_03';
 
+use File::Basename ();
 use File::Spec;
 use IO::File;
 use Config;
@@ -178,7 +179,7 @@
     %prereq = ( %{$build->requires}, %{$build->build_requires} );
     %prereq = map {$_, $prereq{$_}} sort keys %prereq;
     
-    delete $prereq{perl};
+     delete $prereq{perl};
     $MM_Args{PREREQ_PM} = \%prereq;
     
     $MM_Args{INSTALLDIRS} = $build->installdirs eq 'core' ? 'perl' : 
$build->installdirs;
@@ -186,7 +187,11 @@
     $MM_Args{EXE_FILES} = [ sort keys %{$build->script_files} ] if 
$build->script_files;
     
     $MM_Args{PL_FILES} = $build->PL_files || {};
-    
+
+    if ($build->recursive_test_files) {
+        $MM_Args{TESTS} = join q{ }, $package->_test_globs($build);
+    }
+
     local $Data::Dumper::Terse = 1;
     my $args = Data::Dumper::Dumper(\%MM_Args);
     $args =~ s/\{(.*)\}/($1)/s;
@@ -199,6 +204,12 @@
   }
 }
 
+sub _test_globs {
+  my ($self, $build) = @_;
+
+  return map { File::Spec->catfile($_, '*.t') }
+         @{$build->rscan_dir('t', sub { -d $File::Find::name })};
+}
 
 sub subclass_dir {
   my ($self, $build) = @_;

Modified: Module-Build/trunk/t/compat.t
==============================================================================
--- Module-Build/trunk/t/compat.t       (original)
+++ Module-Build/trunk/t/compat.t       Fri Jun 19 16:52:10 2009
@@ -270,6 +270,21 @@
   ok ! -e 'Makefile.PL', "Makefile.PL cleaned up";
 }
 
+{
+  $dist->add_file('t/deep/foo.t', q{});
+  $dist->regen;
+
+  my $mb;
+  stdout_of( sub {
+      $mb = Module::Build->new_from_context( recursive_test_files => 1 );
+  });
+
+  create_makefile_pl('traditional', $mb);
+  my $args = extract_writemakefile_args() || {};
+  is $args->{TESTS}, 't/*.t t/deep/*.t',
+    'Makefile.PL has correct TESTS line for recursive test files';
+}
+
 # cleanup
 $dist->remove;
 

Reply via email to