当 Module::Starter初始化一个项目,它创建一个名为 manifest.t
的测试。
#!perl -T
use strict;
use warnings;
use Test::More;
unless ( $ENV{RELEASE_TESTING} ) {
plan( skip_all => "Author tests not required for installation" );
}
eval "use Test::CheckManifest 0.9";
plan skip_all => "Test::CheckManifest 0.9 required" if $@;
ok_manifest();
当您使用 Build test
运行测试时,这是输出的一部分:
t\00-load.t ....... ok
t\boilerplate.t ... ok
t\manifest.t ...... skipped: Author tests not required for installation
我从狭义上理解结果($ENV{RELEASE_TESTING}
未设置,因此跳过测试),但我没有完全掌握大局。预期的开发过程是什么?我认为运行测试以确认我的模块的 list 是准确的是个好主意。我应该设置那个环境变量吗?如果是,在开发过程中的什么时候?
最佳答案
许多模块发行版都有测试,检查的不是代码是否有效,而是发行版是否处于适合发布的状态。诸如 MANIFEST 是否是最新的,是否所有功能都已记录在 POD 中等。
为了节省时间,除非设置了 RELEASE_TESTING 环境变量,否则这些测试可能会被编写为跳过它们自己。这是一个非正式的标准。这样,这些测试不会在人们安装模块时运行,也不会在作者只是检查代码更改是否破坏任何东西时运行。
在发布您的 dist 之前,您应该运行 RELEASE_TESTING=1 make test
(或等效的 Build)。如果你使用 Dist::Zilla (我强烈推荐),您可以使用 dzil test --release
运行发布测试。该标志也由 TestRelease plugin 自动设置,如果你使用 dzil,你绝对应该使用它。
其他常用于控制测试的环境变量是 AUTOMATED_TESTING 和 AUTHOR_TESTING。 AUTOMATED_TESTING 由 CPAN testers 设置运行自动冒烟测试。
关于perl - Module::Starter 的 manifest.t 中预期的开发过程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066865/