2009-07-28 60 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。

相關問題