Axe*_*ert 2 perl cgi xs perlbrew travis-ci
我有一个名为CGI :: Github :: Webhook的Perl模块,到目前为止,它的测试套件在Travis CI上的分支主机上都可以正常工作。但是,由于它是用于编写CGI脚本的模块,因此我想使用CGI :: Test对其进行测试,因为这将更接近实际情况。
但是到目前为止,在分支机构中运行的所有Travis CI都cgi-test失败了。除了使用Perl 5.24及更高版本的运行之外,每个失败的运行都包含以下行,但路径中具有不同的Perl版本号:
Attempt to reload List/Util.pm aborted.
Compilation failed in require at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Sub/Exporter/Progressive.pm line 9.
BEGIN failed--compilation aborted at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Sub/Exporter/Progressive.pm line 9.
Compilation failed in require at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Devel/GlobalDestruction.pm line 11.
BEGIN failed--compilation aborted at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Devel/GlobalDestruction.pm line 11.
Compilation failed in require at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Moo/_Utils.pm line 21.
BEGIN failed--compilation aborted at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Moo/_Utils.pm line 21.
Compilation failed in require at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Moo.pm line 4.
BEGIN failed--compilation aborted at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/Moo.pm line 4.
Compilation failed in require at /home/travis/build/xtaran/CGI-Github-Webhook/build_dir/lib/CGI/Github/Webhook.pm line 11.
BEGIN failed--compilation aborted at /home/travis/build/xtaran/CGI-Github-Webhook/build_dir/lib/CGI/Github/Webhook.pm line 11.
Compilation failed in require at ./cgitest.pl line 10.
BEGIN failed--compilation aborted at ./cgitest.pl line 10.
script /cgi-bin/cgitest.pl generated no valid headers at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/CGI/Test.pm line 468.
Use of uninitialized value $in_fname in unlink at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/CGI/Test.pm line 469.
Use of uninitialized value $in_fname in concatenation (.) or string at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/CGI/Test.pm line 469.
can't unlink : No such file or directory at /home/travis/perl5/perlbrew/perls/5.22.0/lib/site_perl/5.22.0/CGI/Test.pm line 469.
Run Code Online (Sandbox Code Playgroud)
该示例取自Perl 5.22下的当前最新运行。Perl 5.24上的症状大致相同,只是初始错误消息的措辞似乎有所不同。
任何人都知道这里出了什么问题吗?我什至有机会解决这个问题?对我来说似乎是个虫子。但是在哪个模块中?我没有找到针对CGI-Test,Scalar-List-Utils或XSLoader的匹配错误报告,但可以预料已经报告了此类问题,因为它似乎不是新问题。(几个月前首次注意到。)
如果我在Debian Unstable(当前为Perl版本5.22)上使用系统提供的Perl和Perl模块运行该测试套件,它不会失败,因此我无法真正在本地重现该问题。
我自己发现了它:这是#!/usr/bin/perl我在测试套件中的示例CGI脚本中的shebang行(和/或也许是相同的shebang行t/cgi-test.t)。
更改它们以#!/usr/bin/env perl解决问题,即经过测试的CGI脚本在系统上运行,perl而不是在Perlbrew上安装的脚本。