【问题标题】:How can i get cover to create cover_db?我怎样才能得到掩护来创建cover_db?
【发布时间】:2015-01-06 18:09:07
【问题描述】:

我正在尝试设置 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 目录,所以我猜这应该不是用户权限问题。

提前谢谢你

简·埃斯基尔森

【问题讨论】:

    标签: linux perl junit jenkins cover


    【解决方案1】:

    在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创建。

    【讨论】:

    • 您好 bytepusher,感谢您的回复。如果我以jenkins用户身份运行cover并且cover_db存在,它首先删除cover_db目录并且它永远不会再次尝试创建cover_db目录,至少它没有显示任何错误说它无法创建它。所以我认为这是由于某种原因不再创建目录的问题,我真的不明白为什么:-(
    • 创建报告文件时出现错误,至少代码是这样的。在我看来,它不一定与 cover_db 文件有关。输出看起来确实很奇怪:首先它说它已删除,然后它说它已读取。我只是想帮忙,我不确定确切的问题。
    猜你喜欢
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多