r testthat

¿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.