perl - Module::Starter 的 manifest.t 中预期的开发过程是什么?

标签 perl testing module manifest

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/

相关文章:

javascript - Mocha/Should.js 使用异步函数

unit-testing - 试图获得对 TDD 好处的信心

python - 无法导入名为 pandas 的模块

Perl,动态包含包

perl - 如何将像 "1..15,16"这样的字符串扩展为数字列表?

perl - File::Basename->fileparse 返回 "File::Basename"

perl - 使用 Perl 脚本比较两个文件

ruby - perl 和 ruby​​ 之间河豚加密的区别

python - 在 python 中测试 while 循环

javascript - Node.js 模块/导出系统 : is it possible to export a module as a function