lintr测试通过devtools :: check()通过,失败通过devtools :: test()

时间:2019-05-22 10:08:41

标签: r testing lintr

我是writing an R package,接受了以下棉绒测试:

context("Require no code style errors")
library(lintr)

test_that("Package has no lintr errors", {
    lintr::expect_lint_free()
})

测试通过`devtools :: check():

通过
$ Rscript -e "devtools::check()"
...
─  checking tests ...
✔  Running ‘testthat.R’ [61s/65s]
...
0 errors ✔ | 0 warnings ✔ | 0 notes ✔

并且无棉绒测试失败,并显示devtools::test()

$ Rscript -e "devtools::test()"
...
Testing PosteriorBootstrap
...
✖ |  0 1     | Require no code style errors [6.2 s]
────────────────────────────────────────────────────────────────────────────────
test_lintr.R:5: failure: Package has no lintr errors
Not lint free
tests/testthat/test_anpl.R:112:1: style: Trailing whitespace is superfluous.

^~
...
OK:       20
Failed:   1
Warnings: 0
Skipped:  0

问题在于Github和Travis设置为拒绝未通过测试的请求,并且如果我在devtools::test()之后运行devtools::check(),则所有其他测试运行两次。

如何获得devtools::check()来运行lintr测试?

1 个答案:

答案 0 :(得分:0)

此问题是known issue

  

这不是devtools中的错误(但可能是lintr)。 devtools::check()在一个临时目录中运行检查,但是lint_package()假定它在程序包目录中运行,因此没有源文件要被插入。 ...您可以使用devtools::check(check_dir = ".")进行确认,如果devtools::test()这样做,则会导致掉毛失败。

拟于2015年5月编写的解决方案不再有效。现在,此问题已锁定并关闭,因此不太可能解决。

我建议运行检查并将测试范围缩小到lintr

Rscript -e "devtools::check();devtools::test_file(file = 'testthat/test_lintr.R')"