summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJames E Keenan <jkeenan@cpan.org>2018-07-31 12:14:57 -0400
committerJames E Keenan <jkeenan@cpan.org>2018-07-31 12:19:37 -0400
commit1a5db9eb22cbd2b1c07ac856425356cc4b2c8f7e (patch)
treea7222cb3ae5d665b8b43fbab632c4d0fd233cebb /lib
parentbabbc5d373df919acce19ea59f4f5bdf71121ae0 (diff)
Move MockHomeDir.pm to underneath lib.
The functions exported by ExtUtils::ModuleMaker::Auxiliary are intended to be used in testing this distribution -- and all distributions which subclass it, such as ExtUtils::ModuleMaker::PBP. Auxiliary.pm uses functions found in MockHomeDir.pm. But unless MockHomeDir.pm is underneath lib/ExtUtils/, it won't be indexed by CPAN and won't be found by the test suites of subclasses. Hence, move it to underneath lib/. Add $VERSION to MockHomeDir.pm.
Diffstat (limited to 'lib')
-rw-r--r--lib/ExtUtils/ModuleMaker/Auxiliary.pm6
-rw-r--r--lib/ExtUtils/ModuleMaker/MockHomeDir.pm78
2 files changed, 81 insertions, 3 deletions
diff --git a/lib/ExtUtils/ModuleMaker/Auxiliary.pm b/lib/ExtUtils/ModuleMaker/Auxiliary.pm
index a71021e..f0915be 100644
--- a/lib/ExtUtils/ModuleMaker/Auxiliary.pm
+++ b/lib/ExtUtils/ModuleMaker/Auxiliary.pm
@@ -34,7 +34,7 @@ no warnings 'once';
*like = *Test::More::like;
use warnings;
use lib ( qw| ./t/testlib | );
-use MockHomeDir;
+use ExtUtils::ModuleMaker::MockHomeDir;
=head1 NAME
@@ -200,14 +200,14 @@ sub licensetest {
sub prepare_mockdirs {
my $home_dir = prepare_mock_homedir();
- my $personal_defaults_dir = MockHomeDir::personal_defaults_dir();
+ my $personal_defaults_dir = ExtUtils::ModuleMaker::MockHomeDir::personal_defaults_dir();
croak "Unable to locate '$personal_defaults_dir'" unless (-d $personal_defaults_dir);
ok(-d $personal_defaults_dir, "Directory $personal_defaults_dir created to mock home directory");
return ($home_dir, $personal_defaults_dir);
}
sub prepare_mock_homedir {
- my $home_dir = MockHomeDir::home_dir();
+ my $home_dir = ExtUtils::ModuleMaker::MockHomeDir::home_dir();
croak "Unable to locate '$home_dir'" unless (-d $home_dir);
ok(-d $home_dir, "Directory $home_dir created to mock home directory");
return $home_dir;
diff --git a/lib/ExtUtils/ModuleMaker/MockHomeDir.pm b/lib/ExtUtils/ModuleMaker/MockHomeDir.pm
new file mode 100644
index 0000000..4bb2680
--- /dev/null
+++ b/lib/ExtUtils/ModuleMaker/MockHomeDir.pm
@@ -0,0 +1,78 @@
+package ExtUtils::ModuleMaker::MockHomeDir;
+# Adapted from CPAN-Reporter's t/lib/MockHomeDir.pm
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = "0.62";
+use File::Spec;
+use File::Path 2.15 qw(make_path);
+use File::Temp qw/tempdir/;
+
+my $testlib_dir = File::Spec->catdir(qw| . t testlib |);
+my @components = qw| ExtUtils ModuleMaker Testing Defaults |;
+my $package = join('::' => @components);
+my $per_package = join('::' => @components[0..1], 'Personal', $components[3]);
+my @pmfile_components = (@components[0..2], "$components[3].pm");
+my $testing_defaults_file =
+ File::Spec->catfile($testlib_dir, @pmfile_components);
+die "Could not locate $testing_defaults_file" unless -f $testing_defaults_file;
+
+unshift @INC, $testlib_dir;
+eval "require $package" or die "Unable";
+
+$INC{"File/HomeDir.pm"} = 1; # fake load
+
+my $temp_home = tempdir(
+ "ModuleMaker-XXXXXXXX", TMPDIR => 1, CLEANUP => 1
+) or die "Couldn't create a temporary config directory: $!\nIs your temp drive full?";
+
+my $home_dir = File::Spec->rel2abs( $temp_home );
+my $subdir = '.modulemaker';
+my $personal_defaults_dir =
+ File::Spec->catdir($home_dir, $subdir, qw| ExtUtils ModuleMaker Personal | );
+make_path($personal_defaults_dir, { mode => 0711 });
+die "Unable to create $personal_defaults_dir for testing"
+ unless -d $personal_defaults_dir;
+
+sub home_dir { $home_dir }
+sub personal_defaults_dir { $personal_defaults_dir }
+
+sub personal_defaults_file {
+ my $newfile = File::Spec->catfile($personal_defaults_dir, 'Defaults.pm');
+ open my $OUT, '>', $newfile or die "Unable to open $newfile for writing";
+ print $OUT <<TOP_OF_PACKAGE;
+package $per_package;
+use strict;
+use warnings;
+
+my \$usage = <<ENDOFUSAGE;
+TOP_OF_PACKAGE
+ print $OUT ExtUtils::ModuleMaker::Testing::Defaults::get_usage_as_string();
+ print $OUT <<MIDDLE_OF_PACKAGE;
+ENDOFUSAGE
+
+my \%default_values = (
+MIDDLE_OF_PACKAGE
+ print $OUT ExtUtils::ModuleMaker::Testing::Defaults::get_default_values_as_string();
+ print $OUT <<BOTTOM_OF_PACKAGE;
+);
+
+sub default_values {
+ my \$self = shift;
+ return { %default_values };
+}
+
+1;
+BOTTOM_OF_PACKAGE
+ close $OUT or die "Unable to close $newfile after writing";
+ return $newfile;
+}
+
+package File::HomeDir;
+our $VERSION = 999;
+no warnings 'redefine';
+sub my_home { return $home_dir };
+use warnings;
+
+1;
+