# t/makedefaults/1203.t
# tests of options to make modulemaker selections default personal values
use strict;
local $^W = 1;
use Test::More tests => 37;
use_ok( 'ExtUtils::ModuleMaker' );
use_ok( 'ExtUtils::ModuleMaker::Auxiliary', qw(
_save_pretesting_status
_restore_pretesting_status
check_MakefilePL
)
);
my $statusref = _save_pretesting_status();
SKIP: {
eval { require 5.006_001 };
skip "tests require File::Temp, core with 5.6",
(37 - 10) if $@;
use warnings;
use_ok( 'File::Temp', qw| tempdir |);
my $cwd = $statusref->{cwd};
my ($tdir, $topdir, @pred);
{
# same test as 12-2, only using modulemaker utility in
# non-interactive mode to set Testing::Defaults as temporary
# Personal::Defaults
# PROBLEM: This will not work because setting the -t option for
# Testing::Defaults supersedes all other arguments to modulemaker
# Additional problem: modulemaker both constructs and builds, but it
# does not return an object on which I can call
# make_selections_defaults(). Can I get around this by incorporating
# that method into complete_build() -- so far so good -- and by
# defining a modulemaker option therefor? Okay, but then I cannot
# have the -t option wiping out everything else due to the positioning
# of the processing of $self->{TESTING_DEFAULTS_FILE} inside
# EU::MM::new().
$tdir = tempdir( CLEANUP => 1);
ok(chdir $tdir, 'changed to temp directory for testing');
ok(! system(qq{$^X -I"$cwd/blib/lib" "$cwd/blib/script/modulemaker" -Isn EU::MM::Testing::Defaults -a "Module abstract (<= 44 characters) goes here" -u "Hilton Stallone" -p RAMBO -o "Parliamentary Pictures" -w http://parliamentarypictures.com -e hiltons\@parliamentarypictures.com }),
"able to call modulemaker utility with save defaults option on");
$topdir = "EU/MM/Testing/Defaults";
ok(-d $topdir, "by default, non-compact top directory created");
ok(-f "$topdir/$_", "$_ file created")
for qw| Changes LICENSE MANIFEST Makefile.PL README Todo |;
ok(-d "$topdir/$_", "$_ directory created")
for qw| lib t |;
@pred = (
q{EU::MM::Testing::Defaults},
qq{lib\/EU\/MM\/Testing\/Defaults\.pm},
qq{Hilton\\sStallone},
qq{hiltons\@parliamentarypictures\.com},
qq{Module\\sabstract\\s\\(<=\\s44\\scharacters\\)\\sgoes\\shere},
);
check_MakefilePL($topdir, \@pred);
ok(-f "$statusref->{mmkr_dir}/$statusref->{pers_file}",
"new Personal::Defaults installed");
my $obj2 = ExtUtils::ModuleMaker->new(
NAME => q{Ackus::Frackus},
AUTHOR => q{Marilyn Shmarilyn},
EMAIL => q{marilyns@nineteenthcenturyfox.com},
COMPACT => 1,
);
isa_ok( $obj2, 'ExtUtils::ModuleMaker' );
ok( $obj2->complete_build(), 'call complete_build()' );
$topdir = "Ackus-Frackus";
ok(-d $topdir, "by choice, compact top directory created");
ok(-f "$topdir/$_", "$_ file created")
for qw| Changes LICENSE MANIFEST Makefile.PL README Todo |;
ok(-d "$topdir/$_", "$_ directory created")
for qw| lib t |;
@pred = (
q{Ackus::Frackus},
qq{lib\/Ackus\/Frackus\.pm},
qq{Marilyn\\sShmarilyn},
qq{marilyns\@nineteenthcenturyfox\.com},
qq{Module\\sabstract\\s\\(<=\\s44\\scharacters\\)\\sgoes\\shere},
);
check_MakefilePL($topdir, \@pred);
}
ok(chdir $statusref->{cwd},
"changed back to original directory");
} # end SKIP block
END {
_restore_pretesting_status($statusref);
}