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 是正确的是个好主意。我应该设置该环境变量吗?如果是这样,在开发过程中的什么时候?

最佳答案

许多模块发行版都进行了测试,这些测试不是检查代码是否正常工作,而是检查发行版是否处于适合发布的状态。 list 等是最新的信息,是否所有功能都已在POD中记录,等等。

为了节省时间,除非设置了RELEASE_TESTING环境变量,否则可以编写这些测试以使其自身跳过。这是一个非正式的标准。这样,当人们安装模块时,这些测试就不会运行,而当作者只是在检查代码更改是否破坏了任何东西时,它们也不会运行。

您应该在释放dist之前运行RELEASE_TESTING=1 make test(或Build等效版本)。如果使用Dist::Zilla(我强烈推荐),则可以使用dzil test --release运行发行测试。该标志也由TestRelease plugin自动设置,如果您使用dzil,则一定要使用它。

通常用于控制测试的其他环境变量是AUTOMATED_TESTING和AUTHOR_TESTING。 CPAN testers通过运行自动烟雾测试来设置AUTOMATED_TESTING。

关于perl - Module::Starter的manifest.t中预期的开发过程是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6066865/

10-09 15:50