開発ディレクトリにあるアンインストールされたPerlモジュールを@INCに簡単に追加するにはどうすればよいですか?
-
06-07-2019 - |
質問
既存のプロジェクト用のPerl t / *。tテストを書いています。開発中に、「prove」を使用して、モジュールディレクトリ階層の任意の深さで選択テストを実行したいと思います。テストしたい* .pmファイルと同じ深さでいくつかのt /ディレクトリを作成しました。残念ながら、プロジェクトのコードのベースにあるlib /は@INCにはありません。
@INCへのパスを自動的に検出して追加する最良の方法は何ですか?一般に-bオプションを確認してblibを検証しましたが、機能しないようです(pwdを使用してblib / libを追加し、@ INCに追加します)。理想的には、ソリューションは環境変数やモジュールのインストールを必要とせず、同じコードの多数の作業コピーに対応します。
私のアプローチは間違っていますか?私が見逃している明らかなものはありますか? CPANモジュールは、インストールまたは* .tファイルの先頭にあるコードブロックのコピー(yuck)によってこれを解決するようです。
編集:
構造は次のようになります。
/home/user/proj/branch\_foo/lib/First/Second/Third.pm
/home/user/proj/branch\_foo/lib/First/Second/t/third.t
これは動作します:
~/proj/branch\_foo/lib/First/Second$ prove -I../..
しかし、私は欲しい:
~/proj/branch\_foo/lib/First/Second$ prove -r
または:
~/proj/branch\_foo/lib/First/Second$ prove t/third.t
だからできること:
~/proj/branch\_foo/lib$ prove -r
代わりに:
~/proj/branch\_foo/lib$ prove -I. -r
たぶん -I
を使用して対処するだけです。
他のヒント
これが、まさにblibモジュールが存在する理由です。現在のディレクトリを検索し、その親ディレクトリが@INCに追加する blib / lib を探します。 Perl標準ライブラリの一部であるため、すでに必要です。
t / の下のどこからでも、-Mスイッチを使用してblibをロードできます。
% perl -Mblib test.t
proveで使用する場合
% perl -Mblib prove test.t
proveの-bスイッチと同じものと思われますが、前回(かなり前に)試してみましたが、うまくいきませんでした。たぶん、彼らはそれをblib.pmのように修正した:
% prove -b test.t
これには、 lib / からテストするのではなく、まずディストリビューションをビルドする必要がありますが、それでも実行する必要があります。 :)
環境変数 PERL5LIB
を設定できます( < code> perldoc perlrun )。これにより、 perl
がコロンで区切られたパスを @INC
に追加します。
% export PERL5LIB=/absolute/path/to/your/libraries
% cd into/part/of/your/test/suite
% prove -r