7

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

现在客户决定他们需要运行所有单元测试,就像在标准安装中一样。但是,他们仍然不会安装正常的 Perl。

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

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

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

是否有现有的工具可以帮助完成这个过程?

也许我可以使用PAR::Packer'parl工具来处理我的测试脚本的调用。

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

谢谢。

更新:我不喜欢 PAR 或 PerlApp。这些只是我熟悉的工具。如果您有需要不同打包程序(例如Cava Packager)的想法或解决方案,我很想听听。

更新 2: tsee 指出了 PAR 中的一个很棒的新功能,让我很接近。是否有任何 TAP 专家可以提供一些关于在哪里查看新的 Test::Harness 分布的想法或指示?

4

2 回答 2

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 解释器,这超出了我的理解。

于 2009-07-28T08:19:49.330 回答
1

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

注意:如我的名字所示,我隶属于 Cava Packager。

于 2011-05-22T00:45:47.653 回答