¿Cómo configurar testthat para R CMD check?
(1)
Aparentemente hay dos formas de integrar la testthat
con R CMD check
. Tampoco puedo ponerme a trabajar.
Enfoque # 1: (tal vez en desuso)
Según la wiki de devtools :
Al desarrollar un paquete, ponga sus pruebas en inst / tests y luego cree un archivo tests / run-all.R (tenga en cuenta que debe ser una R mayúscula), que contiene el siguiente código:
library(testthat)
library(mypackage)
test_package("mypackage")
Esto evaluará sus pruebas en el espacio de nombres del paquete (para que pueda probar las funciones no exportadas) y generará un error si hay fallas en la prueba. Esto significa que verá el informe completo de las fallas de prueba y la verificación de R CMD no pasará a menos que todas las pruebas pasen.
El paquete completo está here . En ella se encuentran los dos archivos:
## minimalbugexample/inst/tests/run-all.R
library(testthat)
library(minimalbugexample)
test_package(''minimalbugexample'')
y
## minimalbugexample/inst/tests/test-use-Matrix-package.R
context("Intentional break")
expect_that( TRUE, equals(FALSE))
mi DESCRIPCION es
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''
Después de instalar el paquete, puedo ejecutar las pruebas muy bien (fallan, como se esperaba).
> test_package(''minimalbugexample'')
Intentional break : 1
1. Failure: -------------------------------------------------------------------
TRUE not equal to FALSE
1 element mismatch
Error: Test failures
>
Pero una R CMD check
no ejecuta las pruebas.
$ 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.
No creo que la advertencia de PDF tenga nada que ver con esto, pero puedo proporcionar más detalles si lo solicito.
Enfoque # 2: (borde sangrante)
De acuerdo con el archivo README del repositorio de testthat
:
Ahora, la práctica recomendada es poner las pruebas en pruebas / prueba y asegurarse de que R CMD se ejecute luego poniendo el siguiente código en pruebas / prueba-todo.R:
library(testthat)
test_check(yourpackage)
Así que me aseguré de tener instalada la versión más reciente de testthat:
> install_github("testthat")
Y luego cambió el paquete. Puedes obtener esta versión here . He modificado los dos archivos para que sean
## minimalbugexample/inst/tests/test-all.R
library(testthat)
test_check(minimalbugexample)
y
## minimalbugexample/inst/tests/testthat/test-use-Matrix-package.R
context("Intentional break")
expect_that( TRUE, equals(FALSE))
Luego, actualizando la versión del paquete a 0.1.2 en el archivo de DESCRIPCIÓN, puedo compilarlo, instalarlo y usar testthat
para verificarlo y obtener el mismo resultado que antes. Así que parece que en lo que a testthat
se refiere, está funcionando.
Sin embargo, R CMD check aún no ejecuta las pruebas:
$ 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.
Así que la pregunta:
¿Qué estoy haciendo mal? Mi preferencia es por una solución para el Enfoque 2, ¡pero me quedo con cualquiera!
No tienes un directorio de tests
. test-all.R
debe estar ubicado en minimalbugexample/tests/test-all.R
.
Luego sus pruebas reales van en minimalbugexample/inst/tests
para el enfoque # 1 o minimalbugexample/tests/testthat/
para el enfoque # 2.
Para el enfoque # 2, el archivo test-all.R
debe usar test_check(yourpackage)
lugar de test_package(yourpackage)
y la llamada de la library(yourpackage)
ya no es necesaria.