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

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

Подход № 1: (возможно, не рекомендуется)

Согласно вики devtools:

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

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

Это оценит ваши тесты в пространстве имен пакета (так что вы можете протестировать неэкспортированные функции) и выдаст ошибку, если будут какие-либо тестовые неудачи. Это означает, что вы увидите полный отчет о неудачных тестах, и проверка 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))

мое описание

Package: minimalbugexample
Title: 
Description: 
Version: 0.1.1
Author: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Maintainer: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
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 хранилище:

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

library(testthat)
test_check(yourpackage)

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

> 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 обеспокоен тем, что он работает.

Однако проверка 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, но я возьму и то и другое!

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) звонок больше не требуется.

Другие вопросы по тегам