2009-07-28 58 views
7

我有一个应用程序,我打包成“二进制”形式使用PerlApp进行分发。由于我的客户想要为他们的Win32系统进行简单的安装,所以这个工作非常好。有没有办法用PAR或PerlApp打包我的单元测试?

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

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

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

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

有没有一个现有的工具可以帮助这个过程?

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

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

谢谢。

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

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

回答

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命令行选项的支持是我一直在想的,但不会很快实现。

这里的食谱,你如何让PAR与“可重复使用的EXE”的支持:

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

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

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

+1

我不认为我会找到100%的解决方案。我的需求有点太奇怪了。但是你最近关于PAR的工作听起来是朝着正确方向迈出的一大步。我有一些关于继承或猴子修补Test :: Harness的粗略想法,并且可能证明。使用可重用的PAR,我可能能够将它们结合在一起。谢谢。 – daotoad 2009-07-29 02:38:45

1

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

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

相关问题