nal*_*zok 7 testing code-coverage r package covr
我正在尝试查看sumbose/iRF的代码覆盖率,因此我做了一个git clone,在目录内启动了一个 R 会话,然后
> library(covr)\n> package_coverage()\nError in file(con, "r") : cannot open the connection\nIn addition: Warning messages:\n1: In utils::install.packages(repos = NULL, lib = tmp_lib, pkg$path, :\n installation of package \xe2\x80\x98/private/tmp/iRF\xe2\x80\x99 had non-zero exit status\n2: In file(con, "r") :\n cannot open file \'/private/var/folders/ny/f06ns0d568bgf6s559z8j_9m0000gn/T/RtmpAr8dLV/R_LIBS168866d1ef32f/iRF/R/iRF\': No such file or directory\nRun Code Online (Sandbox Code Playgroud)\n\n但是, 和 都会R CMD INSTALL iRF按install.packages(\'iRF\', repos = NULL)预期安装该软件包。
我也遇到了这个问题,因为未安装正在开发的软件包。错误消息的路径如下:
... /pkgname/R/pkgname': No such file or directory
Run Code Online (Sandbox Code Playgroud)
pkgname包名在哪里。
我使用 VS Code 并调用covr::package_coverage(),以包文件夹作为工作目录。我可以始终重现该错误,然后我注意到如果我devtools::load_all()先调用就会发生此错误。
我发现,由于未知的原因,如果我启动 R 会话并且没有运行devtools::load_all(). 我不需要(也许不应该)加载该包。covr::package_coverage()在该会话中正常运行而不加载包。
如果我devtools::load_all()在调用之后再调用covr::package_coverage(),然后covr::package_coverage()再次调用,则会在同一会话中失败。
所以我认为解决方案很简单,尽管有点违反直觉:
covr::package_coverage()在没有加载包的会话中调用devtools::load_all()。
我可以covr::package_coverage()在这次会议中多次拨打电话,没有任何问题。我对文件所做的更改已正确反映在 的输出中covr::package_coverage(),而无需加载包。
我在Windows中使用covr 3.5.1,R 4.2.0。