有没有办法用PAR或PerlApp打包我的单元测试?

时间:2009-07-28 00:10:54

标签: perl par perlapp

我有一个应用程序,我使用PerlApp打包成“二进制”形式进行分发。由于我的客户希望为他们的Win32系统进行简单安装,因此非常适用。

现在客户已决定他们需要运行所有单元测试,例如在标准安装中。但是,他们仍然不会安装普通的Perl。

所以,我发现自己需要一种方法来打包我的单元测试,以便在我的客户系统上进行操作。

我的第一个想法是,我可以在一个文件中打包prove并分别打包我的每个测试。然后发送具有适当结构的zip文件。

一些研究表明Test :: Harness :: Straps从命令行调用perl。

是否有现有工具可以帮助完成此过程?

也许我可以使用PAR::Packer的{​​{1}}工具来处理我的测试脚本的调用。

我对如何应用PARPerlApp以及如何处理覆盖Test :: Harness和朋友的任何想法感兴趣。

感谢。

更新:我没有在PAR或PerlApp上设置心脏。这些只是我熟悉的工具。如果您有想法或解决方案需要不同的打包器(例如Cava Packager),我很乐意听到它。

更新2: tsee指出PAR中的一个很棒的新功能让我很接近。是否有任何TAP专家可以提供一些想法或指示在新的Test :: Harness发行版中查看哪些内容?

2 个答案:

答案 0 :(得分:4)

如果我告诉你PAR(可能还有perlapp)不打算包装整个测试套件和过多的CPAN模块构建副产品,我可能不会打破重大新闻。它们旨在打包独立应用程序或类似二进制JAR的模块库。

这就是说,您可以使用pp的-a开关将任意文件添加到PAR存档(包括.par库和独立的.exe文件)。如果是独立的可执行文件,则内容将在运行时提取到$ ENV {PAR_TEMP}。“/ inc”。

这使您无法重用PAR打包的可执行文件来运行测试工具(并让您将可执行文件作为“perl”运行)。现在,我没有现成的解决方案,但我最近致力于将PAR打包的可执行文件重新用作或多或少的通用perl解释器。在我解释你如何使用它之前有两个问题:

  • 您的应用程序不会被神奇地称为“perl”并将其自身添加到您的$ PATH。
  • 将应用程序“重用”为通用perl需要特殊选项,而目前支持普通的perl选项(perlrun中的选项)。它可以简单地运行您选择的外部perl脚本。

不幸的是,后一个问题可能会为你杀掉这种方法。支持perl命令行选项是我一直在考虑的事情,但不会很快实现。

以下是如何通过“可重用的exe”支持获得PAR的方法:

  • 从CPAN安装最新版本的PAR。
  • 从CPAN(0.992_02或03)安装最新的开发人员版本的PAR :: Packer。
  • 将“--reusable”选项添加到pp命令行。
  • 使用以下选项运行您的可执行文件以运行外部脚本“foo.pl”:

    ./ myapp --par-options --reuse foo.pl FOO-PL-OPTIONS-HERE

不幸的是,你将如何教授Test :: Harness,“。/ myapp --par-options --reuse”是一个perl解释器,超出了我的范围。

答案 1 :(得分:1)

Cava Packager允许您将测试脚本与打包的可执行文件打包在一起。这主要是为了允许您在分发之前对打包的代码运行测试。但是,该选项还可以将测试和测试功能分发给最终用户。

注意:如我的名字所示,我与Cava Packager有联系。