7

配布用に PerlApp を使用して「バイナリ」形式にパックするアプリがあります。私のクライアントは Win32 システムの簡単なインストールを望んでいるので、これは非常にうまく機能します。

クライアントは、標準インストールのように、すべての単体テストを実行する必要があると判断しました。ただし、通常の Perl はインストールされません。

そのため、クライアントのシステムで動作するように単体テストをパッケージ化する方法が必要であることに気付きました。

最初に考えたのはprove、1 つのファイルにまとめて、各テストを個別にまとめられるということでした。次に、適切な構造の zip ファイルを送信します。

ちょっとした調査で、Test::Harness::Straps がコマンド ラインから perl を呼び出すことがわかりました。

このプロセスに役立つ既存のツールはありますか?

おそらく、PAR::Packerparlツールを使用して、テスト スクリプトの呼び出しを処理できます。

PARまたはPerlAppのいずれかを適用する方法についての考え、および Test::Harness とその友人をオーバーライドする方法についての考えに興味があります。

ありがとう。

更新: PAR や PerlApp には心当たりがありません。それらは私がよく知っているツールです。別のパッケージャー ( Cava Packagerなど) を必要とするアイデアや解決策がある場合は、ぜひお知らせください。

更新 2: tsee は、PAR の優れた新機能を指摘してくれました。新しい Test::Harness ディストリビューションのどこを見ればよいかについて、アイデアや指針を提供できる TAP の専門家はいますか?

4

2 に答える 2

4

PAR(そしておそらくperlappも)がテストスイート全体と大量のCPANモジュールビルド副産物をパッケージ化することを意図していないと言っても、私はおそらく大きなニュースを壊していません。これらは、スタンドアロンアプリケーションまたはバイナリJARのようなモジュールライブラリをパッケージ化することを目的としています。

そうは言っても、ppの-aスイッチを使用して、任意のファイルをPARアーカイブ(.parライブラリとスタンドアロンの.exeの両方)に追加できます。スタンドアロンの実行可能ファイルの場合、コンテンツは実行時に$ENV{PAR_TEMP}。"/inc"に抽出されます。

そのため、PARでパッケージ化された実行可能ファイルを再利用してテストハーネスを実行する(そして実行可能ファイルを「perl」として実行させる)という問題が残ります。現在、そのための準備が整った解決策はありませんが、最近、PARパッケージの実行可能ファイルを多かれ少なかれ汎用のperlインタープリターとして再利用できるようにすることに取り組んでいます。それをどのように使用できるかを説明する前に、2つの落とし穴があります。

  • アプリケーションが魔法のように「perl」と呼ばれ、$PATHに追加されることはありません。
  • 汎用perlとしてのアプリケーションの「再利用」には特別なオプションが必要であり、現在、通常のperlオプション(perlrunのオプション)をサポートしていません。選択した外部perlスクリプトを実行するだけです。

残念ながら、後者の問題はあなたのためにこのアプローチを殺すかもしれないものです。perlコマンドラインオプションのサポートは私が考えていたものですが、すぐには実装されません。

「再利用可能なexe」をサポートするPARを取得する方法のレシピは次のとおりです。

  • CPANから最新バージョンのPARをインストールします。
  • CPANから最新の開発者バージョンのPAR::Packer(0.992_02または03)をインストールします。
  • ppコマンドラインに「--reusable」オプションを追加します。
  • 次のオプションを使用して実行可能ファイルを実行し、外部スクリプト「foo.pl」を実行します。

    ./myapp --par-options --reusefoo.plFOO-PL-OPTIONS-ここ

残念ながら、Test ::Harnessに「./myapp--par-options--reuse」がperlインタープリターであるということをどのように教えるかは私にはわかりません。

于 2009-07-28T08:19:49.330 に答える
1

Cava Packagerを使用すると、テスト スクリプトをパッケージ化された実行可能ファイルと一緒にパッケージ化できます。これは主に、配布前にパッケージ化されたコードに対してテストを実行できるようにするためです。ただし、テストとテスト機能をエンド ユーザーに配布するオプションもあります。

注: 私の名前が示すように、私は Cava Packager と提携しています。

于 2011-05-22T00:45:47.653 に答える