我正在开发一个 Perl 模块,它有很多 XS 代码,也用于Dist::Zilla
管理打包。有效测试事物的最佳方法是什么?我知道dzil test
,但这很慢,因为每次调用它都会执行完整的构建/编译/测试周期。
最好只更新自上次测试以来需要更新的部分,并且能够只运行某些t/*.t
测试脚本而不是全部。有人有他们喜欢的解决方案吗?
我正在开发一个 Perl 模块,它有很多 XS 代码,也用于Dist::Zilla
管理打包。有效测试事物的最佳方法是什么?我知道dzil test
,但这很慢,因为每次调用它都会执行完整的构建/编译/测试周期。
最好只更新自上次测试以来需要更新的部分,并且能够只运行某些t/*.t
测试脚本而不是全部。有人有他们喜欢的解决方案吗?
过去,我只是将 dzil 生成的 Build.PL/Makefile.PL 作为“Makefile_dev.PL”(或“Build_dev.PL”)放入源存储库,并将其添加到 MANIFEST.SKIP (或基于 dzil 的生成等效项)并在开发过程中使用它。
我知道我将自己归类为老派,但正是由于这些原因,我不使用 Dist::Zilla:当它工作得很好时,当它不起作用时,真的很难让它做什么你要。
我想这意味着,我的回答是:当它变得太难时,只需转向 dzil 生成的主要工具之一,即。EUMM 或 MB 直接。
对于我的 XS 模块,我使用MakeMaker::Custom或ModuleBuild::Custom(均由我提供)。如果您设置正确,您可以直接在您的存储库中运行 Makefile.PL 或 Build.PL 而无需调用dzil
。要运行特定测试,您只需构建 dist 并使用prove -b testname
.
一些使用 ModuleBuild::Custom: Media-LibMTP-API , Win32-IPC的例子。
使用 MakeMaker::Custom: Win32-Setupsup 的示例。