Подтвердить что ты не робот

Как настроить testthat для проверки R CMD?

Есть, по-видимому, два способа интегрировать testthat с R CMD check. Я не могу работать.

Подход №1: (возможно, устаревший)

В соответствии с devtools wiki:

При разработке пакета поместите свои тесты в inst/tests, а затем создать файл test/run-all.R(обратите внимание, что это должен быть капитал R), который содержит следующий код:

library(testthat) 
library(mypackage)
test_package("mypackage") 

Это проверит ваши тесты в пакете пространство имен (так что вы можете протестировать неэкспортируемые функции), и он будет бросать если есть какие-либо ошибки тестирования. Это означает, что вы увидите полный отчет об ошибках тестирования и проверка R CMD не пройдут, если все тесты проходят.

Весь пакет здесь. В нем находятся два файла:

## minimalbugexample/inst/tests/run-all.R
library(testthat)
library(minimalbugexample)
test_package('minimalbugexample')

и

## minimalbugexample/inst/tests/test-use-Matrix-package.R
context("Intentional break")
  expect_that( TRUE, equals(FALSE))

my ОПИСАНИЕ

Package: minimalbugexample
Title: 
Description: 
Version: 0.1.1
Author: Nathan VanHoudnos <[email protected]>
Maintainer: Nathan VanHoudnos <[email protected]>
Depends:
    R (>= 3.0.1),
    Matrix (>= 1.0)
Suggests:
    testthat
License: GPL
LazyData: true
Collate:
    'minimalbugexample-package.r'
    'use-Matrix-package.R'

После установки пакета я могу выполнить тесты просто отлично (они не работают, как и ожидалось).

> test_package('minimalbugexample')
Intentional break : 1


1. Failure:  -------------------------------------------------------------------
TRUE not equal to FALSE
1 element mismatch
Error: Test failures
> 

Но R CMD check не запускает тесты.

$ R CMD check minimalbugexample_0.1.1.tar.gz 
... snip ...
* checking PDF version of manual ... WARNING
WARNING: There was 1 warning.
See
  ‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.

Я не думаю, что предупреждение PDF имеет какое-то отношение к этому, но я могу предоставить более подробную информацию, если потребуется.

Подход № 2: (край кровотечения)

В соответствии с README файл репозитория testthat:

Теперь рекомендуем практиковать, чтобы поставить свои тесты в тестах /testthat и убедитесь, что R CMD проверяет выполнение, а затем поместив следующий код в Тесты/Тест-all.R:

library(testthat)
test_check(yourpackage)

Итак, я убедился, что у меня установлена ​​самая последняя версия testthat:

> install_github("testthat")

И затем изменил пакет. Вы можете получить эту версию здесь. Я изменил два файла:

## minimalbugexample/inst/tests/test-all.R
library(testthat)
test_check(minimalbugexample)

и

## minimalbugexample/inst/tests/testthat/test-use-Matrix-package.R
context("Intentional break")
  expect_that( TRUE, equals(FALSE))

Затем, обновив версию пакета до 0.1.2 в файле DESCRIPTION, я смогу ее создать, установить и использовать testthat, чтобы проверить его и получить тот же результат, что и раньше. Таким образом, кажется, что касается testthat, его работа.

Однако проверка R CMD все еще не запускает тесты:

$ R CMD check minimalbugexample_0.1.2.tar.gz 
... snip ...
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
WARNING: There was 1 warning.
See
  ‘/home/nathanvan/software/minimalbugexample.Rcheck/00check.log’
for details.

Итак, вопрос:

Что я делаю неправильно? Мое предпочтение - решение для подхода 2, но я возьму либо!

4b9b3361

Ответ 1

У вас нет каталога tests. test-all.R должно располагаться в minimalbugexample/tests/test-all.R.

Затем ваши фактические тесты идут в minimalbugexample/inst/tests для подхода # 1 или minimalbugexample/tests/testthat/ для подхода # 2.

Для подхода # 2 файл test-all.R должен использовать test_check(yourpackage) вместо test_package(yourpackage), а вызов library(yourpackage) больше не требуется.