【发布时间】:2012-08-23 17:37:44
【问题描述】:
PREREQ_PM指定了运行时的先决条件,但是如何指定运行测试用例需要哪些模块呢?
我应该为此使用BUILD_REQUIRES 吗?
【问题讨论】:
标签: perl perl-module makemaker
PREREQ_PM指定了运行时的先决条件,但是如何指定运行测试用例需要哪些模块呢?
我应该为此使用BUILD_REQUIRES 吗?
【问题讨论】:
标签: perl perl-module makemaker
从ExtUtils::MakeMaker 6.64 开始,有一个TEST_REQUIRES 参数。
use ExtUtils::MakeMaker 6.64;
WriteMakefile(
...,
TEST_REQUIRES => {
Test::More => 0.95,
},
...,
);
【讨论】:
CPAN::Meta::Spec 定义了模块如何将其先决条件传达给工具链。版本 2 规范修订 the way prerequisites are listed。 test 阶段现在有自己的先决条件列表。
但 MakeMaker 尚未针对 v2 规范进行更新,而且很可能永远不会更新。我所知道的唯一完全兼容的 v2 分发工具是 Dist::Zilla(我推荐它的原因不止于此)。
当 CPAN::Meta::Converter 从 v2 规范转换为 v1.4 时,它会将 test 要求合并到 build_requires。
所以是的,如果你坚持使用 MakeMaker,运行测试所需的任何模块都应该列在 BUILD_REQUIRES 中。 PREREQ_PM 应该只包含在安装模块之后仍然需要的模块。
【讨论】:
TEST_REQUIRES 的支持。有机会我会更新的。
如果在没有模块的情况下测试失败,那么我将其列在PREREQ_PM 中,无论是测试还是运行模块都需要它。
如果我需要用于某些测试的模块,但不需要它们来运行模块,我会在测试运行时检测到这些模块,如果找不到它们,我会跳过测试(通过 PASS)。
我认为 ExtUtils::MakeMaker 中没有你想要的任何字段。
【讨论】: