Тест lintr проходит с помощью devtools :: check () и завершается неудачей с помощью devtools :: test () - PullRequest
0 голосов
/ 22 мая 2019

Я пишу пакет R со следующим тестом ворса:

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 голосов
/ 22 мая 2019

Эта проблема - известная проблема :

Это не ошибка в devtools (но, возможно, в lintr).devtools::check() запускает проверку во временном каталоге, но lint_package() предполагает, что он выполняется в каталоге пакета, поэтому нет исходных файлов для разметки.... вы можете подтвердить это с помощью devtools::check(check_dir = "."), что приведет к ошибкам линтинга, если devtools::test() сработает.

Предложенное решение, написанное в мае 2015 года, больше не работает.Теперь проблема заблокирована и закрыта, поэтому вряд ли она будет решена.

Я предлагаю запустить проверку и сузить тест только до lintr:

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