我的CPAN模块之一是不可用 on ActivePerl,通过它的ppm实用程序。显然,我对这个模块的单元测试太彻底了,而且当它试图构建它时,它是ActiveState的构建过程超时的。
因此,我在测试中要做的是检测我的模块何时正在ActivePerl上构建,如果是的话,将为构建过程提供一组更小、更快的测试。
我找到了一种方法是:
($is_activestate) = grep /provided by ActiveState/, qx($^X -v)但我想知道是否有一个更轻量级的选择。在ActivePerl中总是(且仅)设置的环境变量?Config里有什么吗?还有其他建议吗?
更新:看起来像是在构建过程中设置了$ENV{ACTIVESTATE_PPM_BUILD}。
发布于 2016-05-05 17:55:08
检查它是否在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}设置为support@ActiveState.com总能检查所有的人。
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 };发布于 2016-05-05 19:36:07
根据对activeperl ppm build increase timeout的快速搜索,您可以将这种情况报告给他们的邮件列表/支持,他们将手动增加模块构建的超时值。
https://stackoverflow.com/questions/37056509
复制相似问题