- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试设置 Jenkins 以在我的 Perl 项目上运行测试和覆盖。在 Jenkins 中,我有一个如下所示的 shell 脚本:
perl --version
perl Build.PL
prove -v test.pl --timer -l t > jenkins-${JOB_NAME}-${BUILD_NUMBER}-junit.TAP
/usr/local/bin/cover -test -report clover
当 shell 执行此调用“/usr/local/bin/cover -test -report clover”时,它会创建以下输出:
Deleting database /var/lib/jenkins/workspace/Banking/cover_db
cover: running ./Build test "--extra_compiler_flags=-O0 -fprofile-arcs -ftest- coverage" "--extra_linker_flags=-fprofile-arcs -ftest-coverage"
test.pl .. ok
All tests successful.
Files=1, Tests=120, 7 wallclock secs ( 0.04 usr 0.01 sys + 0.91 cusr 0.04 csys = 1.00 CPU)
Result: PASS
Reading database from /var/lib/jenkins/workspace/Banking/cover_db
Writing clover output file to '/var/lib/jenkins/workspace/Banking/cover_db/clover.xml'...
No such file or directory at /usr/local/share/perl5/Devel/Cover/Report/Clover/Builder.pm line 40.
Build step 'Execute shell' marked build as failure
在我看来它删除了 cover_db 目录(如果它存在)但无法重新创建它,有人知道我做错了什么吗?作为 Jenkins 用户,我可以创建和删除 cover_db 目录,所以我猜这应该不是用户权限问题。
提前致谢
简·埃斯基尔森
最佳答案
在Devel/Cover/Report/Clover/Builder.pm中提到的第(40)行:
open( my $fh, '>', $outfile ) or die($!);
在您的示例中,$outfile 为“clover.xml”。
编辑:澄清一下,在我看来它死于
open ( my $fh, '>', '/var/lib/jenkins/workspace/Banking/cover_db/clover.xml' )
这就是为什么我怀疑存在以下问题之一,因为“开放”本身还没有以任何不可挽回的方式让我失望。不幸的是,我不能确切地说出问题是什么。希望有人可以。
因此,很可能是 Clover 没有在目录中写入此文件的访问权限的问题,因为此行只是尝试打开具有写入访问权限的文件,如果 open() 失败则失败。
仔细检查 Clover 的权限,应该可以修复它。
编辑:因为它传递了整个路径,(即 $outfile 似乎包含 /var/lib/jenkins/workspace/Banking/cover_db/clover.xml
,而不仅仅是 clover.xml,所以当时可能还没有创建目录,我没有深入研究代码来验证何时完成。
因此,您可能还想在运行后检查该目录是否存在,以及它是否有权这样做。
也可以查看目录是否存在,或者clover是否可以创建。
关于linux - 我怎样才能得到封面来创建 cover_db?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843792/
我正在尝试设置 Jenkins 以在我的 Perl 项目上运行测试和覆盖。在 Jenkins 中,我有一个如下所示的 shell 脚本: perl --version perl Build.PL pr
我是一名优秀的程序员,十分优秀!