diff options
author | James E Keenan <jkeenan@cpan.org> | 2018-07-31 12:14:57 -0400 |
---|---|---|
committer | James E Keenan <jkeenan@cpan.org> | 2018-07-31 12:19:37 -0400 |
commit | 1a5db9eb22cbd2b1c07ac856425356cc4b2c8f7e (patch) | |
tree | a7222cb3ae5d665b8b43fbab632c4d0fd233cebb /lib | |
parent | babbc5d373df919acce19ea59f4f5bdf71121ae0 (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.pm | 6 | ||||
-rw-r--r-- | lib/ExtUtils/ModuleMaker/MockHomeDir.pm | 78 |
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; + |