2016-05-05 6 views
9

my CPAN modulesのいずれかがActivePerlのppmユーティリティを通じてnot availableになります。どうやら、このモジュールの私のユニットテストはあまりにも徹底しており、ビルドしようとするとActiveState's build process times outです。ActiveStateのperlの検出方法は?

私のテストでは、自分のモジュールがActivePerl上にビルドされていることを検出し、そうであればビルドプロセスに、より小型で高速なテストセットを提供することができます。

One way I've found to do thisは次のとおりです。

($is_activestate) = grep /provided by ActiveState/, qx($^X -v) 

が、より軽量なオプションがある場合、私は思ったんだけど。 ActivePerlに常に設定されている環境変数です。 Configに何か?その他の提案はありますか?

更新:これらのビルド中に$ENV{ACTIVESTATE_PPM_BUILD}が設定されているように見えます。

+2

FWIW: 'Config :: local_patches()'は何らかの値である可能性があります。私のマシンでは 'ActivePerl Build 2201 [299574]'を返します。 – tjd

答えて

7

ActivePerlビルドで実行されているかどうかを確認することは最適ではありません。理想的には、ActiveStateのビルド環境で実行されているかどうかを確認する必要があります。私はt/00-use.tにenvをダンプして、これを示す変数を設定しているかどうか確認します。

info("$_=$ENV{$_}") for sort keys %ENV; 

また、ActiveStateに連絡して、お勧めするものを尋ねることもできます。


また、最速のテストはオンデマンドでのみ実行できます(特定の環境が存在する場合など)。 5分間のテストは、他の人にも少し過度に見えるかもしれません。あなたはActiveStateのビルドを実行しているかどうかのチェックについては


、ここでいくつかの可能性があります:

  • use Config; print Config::local_patches();ActivePerl Buildが含まれた文字列を返します。
  • $Config{cf_email}[email protected]
  • に設定されています。ActivePerl :: Configモジュールが存在します。
  • ActivePerl :: PPMモジュールが存在します。

いつもすべてをチェックできました。

use Config qw(%Config); 

my $is_activeperl = 0; 
$is_activeperl ||= eval { Config::local_patches() =~ /ActivePerl/i }; 
$is_activeperl ||= $Config{cf_email} =~ /ActiveState/i; 
$is_activeperl ||= eval { require ActivePerl::Config }; 
$is_activeperl ||= eval { require ActivePerl::PPM }; 
+0

これはすばらしい提案です。ありがとう! – mob

4

あなたは自分のメーリングリスト/サポートにこの状況を報告することができ、彼らは手動でモジュールのビルドのためのタイムアウト値を増やしますactiveperl ppm build increase timeoutのためのクイック検索によります。

関連する問題