Subject: | Tests fail if Test-Dependencies is bootstrapped with recent Module::Install |
If I remove ./inc and use current Module::Install from my system, generated META.yml will declare build-time dependency on ExtUtils::MakeMaker:
build_requires:
ExtUtils::MakeMaker: 6.36
Test::Builder::Tester: 0.64
configure_requires:
ExtUtils::MakeMaker: 6.36
which of course is not used anywhere in the Test-Dependencies files, so test fails like this:
t/02-dependencies-default.t .. 3/?
# Failed test 'ExtUtils::MakeMaker is not a build-time dependency'
# at t/02-dependencies-default.t line 6.
# Looks like you failed 1 test of 13.
t/02-dependencies-default.t .. Dubious, test returned 1 (wstat 256, 0x100)
This is because Module::Install::Makfile started to inject dependency on ExtUtils::MakeMaker into metadata, from Module-Install-1.06's inc/Module/Install/Makefile.pm:
if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) {
# This previous attempted to inherit the version of
# ExtUtils::MakeMaker in use by the module author, but this
# was found to be untenable as some authors build releases
# using future dev versions of EU:MM that nobody else has.
# Instead, #toolchain suggests we use 6.59 which is the most
# stable version on CPAN at time of writing and is, to quote
# ribasushi, "not terminally fucked, > and tested enough".
# TODO: We will now need to maintain this over time to push
# the version up as new versions are released.
$self->build_requires( 'ExtUtils::MakeMaker' => 6.59 );
$self->configure_requires( 'ExtUtils::MakeMaker' => 6.59 );
} else {
# Allow legacy-compatibility with 5.005 by depending on the
# most recent EU:MM that supported 5.005.
$self->build_requires( 'ExtUtils::MakeMaker' => 6.36 );
$self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 );
}
Maybe Test-Dependencies should scan ./inc and discover "use ExtUtils::MakeMaker" there.