2 min read

R version 4.X.X - nouveautés dans la procédure Check

R version > 4.0.0

Une nouveauté de R version > 4.0.0 est que le Check de devtools exécute maintenant les exemples même s’ils sont en \donttest{} , ce qui rend la procédure plus longue, \donttest{} étant utilisé pour les exemples longs en temps d’exécution.

Extrait de la note dans la version R 4.0.0 (section Utilities):

R CMD check --as-cran now runs \donttest examples (which are run by example() ) instead of instructing the tester to do so. This can be temporarily circumvented during development by setting environment variable _R_CHECK_DONTTEST_EXAMPLES_ to a false value. (edited)

Cela impose au développeur de contrôler que tous ses exemples fonctionnent même ceux encapsulés dans un \donttest{} qui avant pouvait donc faire passer des exemples érronés. Mais c’est un peu contraignant en phase de développement car si on met le c’est souvent parce que ces exemples sont looooooongs en exécution…

Contraindre les options par défaut du Check

Il est biensur possible de contraindre le check à ne pas exécuter les \donttest{}, il suffit pour cela de changer la valeur de la variable environnementale _R_CHECK_DONTTEST_EXAMPLES_.

2 possibilités:

  • Dans un fichier à créer, check.Renviron, écrire la ligne suivante R_CHECK_DONTTEST_EXAMPLES=FALSE puis déposer ce fichier dans le répertoire ~/.R/ (peut être identifié avec normalizePath("~/.R/"). Sous windows, sachant que j’installe R à la racine de C:/, par exemple, ce serait: C:/R/R-4.0.3/etc/ (il y a deja le .Rprofile)

  • Dans la console R, écrire: Sys.setenv("_R_CHECK_DONTTEST_EXAMPLES_"="FALSE"). Attention, cela ne fonctionne que pour la session en cours. A la ré-ouverture de R, cette variable n’existe plus. donc à faire à façon, ce qui n’est pas plus mal car ainsi il est possible de bien contrôler tous les exemples d’un package avant soumission.

Si on souhaite supprimer cette nouvelle variable, il suffit d’écrire, toujours dans la console R: Sys.unsetenv("_R_CHECK_DONTTEST_EXAMPLES_").

Soumission au CRAN

Par rapport au soumission CRAN, j’ai lu que:

  1. pour la 1ere soumission, ils executent même les \donttest{} et même si c’est long (avant on était recalé si le check était trop long…)
  2. puis pour les check qu’ils font chaque mois, ils n’exécutent pas les \donttest{}, pour aller plus vite. donc, il est tjs OK d’utiliser le \donttest{}.