Author: dagolden
Date: Tue Sep  1 13:13:08 2009
New Revision: 13246

Added:
   Module-Build/trunk/t/properties/
   Module-Build/trunk/t/properties/needs_compiler.t
Modified:
   Module-Build/trunk/MANIFEST

Log:
add tests for 'needs_compiler' property

Modified: Module-Build/trunk/MANIFEST
==============================================================================
--- Module-Build/trunk/MANIFEST (original)
+++ Module-Build/trunk/MANIFEST Tue Sep  1 13:13:08 2009
@@ -65,6 +65,7 @@
 t/PL_files.t
 t/pod_parser.t
 t/ppm.t
+t/properties/needs_compiler.t
 t/README.pod
 t/runthrough.t
 t/sample.t

Added: Module-Build/trunk/t/properties/needs_compiler.t
==============================================================================
--- (empty file)
+++ Module-Build/trunk/t/properties/needs_compiler.t    Tue Sep  1 13:13:08 2009
@@ -0,0 +1,86 @@
+# sample.t -- a sample test file for Module::Build
+
+use strict;
+use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
+use MBTest;
+use DistGen;
+
+plan tests => 13;
+
+# Ensure any Module::Build modules are loaded from correct directory
+blib_load('Module::Build');
+
+# create dist object in a temp directory
+# MBTest uses different dirs for Perl core vs CPAN testing 
+my $dist = DistGen->new( dir => MBTest->tmpdir );
+
+# generate the skeleton files and also schedule cleanup
+$dist->regen;
+END{ $dist->remove }
+
+# enter the test distribution directory before further testing
+$dist->chdir_in;
+
+# get a Module::Build object and test with it
+my $mb;
+ok( $mb = $dist->new_from_context, 
+  "Default Build.PL" 
+);
+ok( ! $mb->needs_compiler, "needs_compiler is false" );
+ok( ! exists $mb->{properties}{build_requires}{'ExtUtils::CBuilder'},
+  "ExtUtils::CBuilder is not in build_requires" 
+);
+
+#--------------------------------------------------------------------------#
+# try with c_source
+#--------------------------------------------------------------------------#
+$dist->change_build_pl({
+    module_name => $dist->name,
+    license => 'perl',
+    c_source => 'src',
+});
+$dist->regen;
+ok( $mb = $dist->new_from_context, 
+  "Build.PL with c_source" 
+);
+is( $mb->c_source, 'src', "c_source is set" );
+ok( $mb->needs_compiler, "needs_compiler is true" );
+ok( exists $mb->{properties}{build_requires}{'ExtUtils::CBuilder'},
+  "ExtUtils::CBuilder was added to build_requires" 
+);
+
+#--------------------------------------------------------------------------#
+# try with xs files
+#--------------------------------------------------------------------------#
+$dist = DistGen->new(dir => 'MBTest', xs => 1);
+$dist->regen;
+$dist->chdir_in;
+
+ok( $mb = $dist->new_from_context, 
+  "Build.PL with xs files" 
+);
+ok( $mb->needs_compiler, "needs_compiler is true" );
+ok( exists $mb->{properties}{build_requires}{'ExtUtils::CBuilder'},
+  "ExtUtils::CBuilder was added to build_requires" 
+);
+
+#--------------------------------------------------------------------------#
+# force needs_compiler off, despite xs modules
+#--------------------------------------------------------------------------#
+
+$dist->change_build_pl({
+    module_name => $dist->name,
+    license => 'perl',
+    needs_compiler => 0,
+});
+$dist->regen;
+
+ok( $mb = $dist->new_from_context ,
+  "Build.PL with xs files, but needs_compiler => 0" 
+);
+is( $mb->needs_compiler, 0, "needs_compiler is false" );
+ok( ! exists $mb->{properties}{build_requires}{'ExtUtils::CBuilder'}, 
+  "ExtUtils::CBuilder is not in build_requires" 
+);
+
+# vim:ts=2:sw=2:et:sta:sts=2

Reply via email to