Как указать предварительные условия теста в ExtUtils::MakeMaker Makefile.PL
PREREQ_PM
определяет предварительные условия выполнения, но как указать, какие модули требуются для выполнения тестовых случаев?
Должен ли я использовать BUILD_REQUIRES
за это?
3 ответа
Начиная с ExtUtils:: MakeMaker 6.64, существует TEST_REQUIRES
параметр.
use ExtUtils::MakeMaker 6.64;
WriteMakefile(
...,
TEST_REQUIRES => {
Test::More => 0.95,
},
...,
);
CPAN::Meta::Spec определяет, как модули передают свои предварительные условия в цепочку инструментов. Спецификация версии 2 изменила способ перечисления предварительных условий. test
Фаза теперь имеет собственный список предпосылок.
Но MakeMaker не был обновлен для спецификации v2, и, вероятно, никогда не будет. Единственный известный мне дистрибутив v2 - это Dist:: Zilla (и я рекомендую его по нескольким причинам).
Когда CPAN::Meta::Converter конвертирует из спецификации v2 в v1.4, он объединяет test
требования в build_requires
,
Так что да, если вы придерживаетесь MakeMaker, любые модули, необходимые для запуска тестов, должны быть перечислены в BUILD_REQUIRES
, PREREQ_PM
должен содержать только те модули, которые все еще необходимы после установки модуля.
Если тесты не пройдут без модуля, я перечислю его в PREREQ_PM
независимо от того, нужен ли он для тестирования или для запуска модуля.
Если мне нужны модули для некоторых тестов, но они не нужны для запуска модуля, я обнаруживаю их при запуске тестов и пропускаю тесты (с ПРОПУСКОМ), если не могу их найти.
Я не думаю, что в ExtUtils::MakeMaker есть поле для того, что вы хотите.