Est-il possible d'utiliser des données de package R dans TestThat Tests ou run_examples ()?

StackOverflow https://stackoverflow.com/questions/8898469

  •  29-10-2019
  •  | 
  •  

Question

Je travaille sur le développement d'un package R, en utilisant Devtools, TestThat et Roxygen2. J'ai quelques ensembles de données dans le dossier de données (foo.txt et bar.csv).

Ma structure de fichiers ressemble à ceci:

/ mypackage
    / data
        * foo.txt, bar.csv
    / inst
        / tests
            * run-all.R, test_1.R
    / man
    / R

Je suis presque sûr que «foo» et «bar» sont documentés correctement:

    #' Foo data
    #'
    #' Sample foo data
    #'
    #' @name foo
    #' @docType data
    NULL
    #' Bar data
    #'
    #' Sample bar data
    #'
    #' @name bar
    #' @docType data
    NULL

Je voudrais utiliser les données dans «foo» et «bar» dans mes exemples de documentation et mes tests unitaires.

Par exemple, je voudrais utiliser ces ensembles de données dans mes tests de tests en appelant:

    data(foo)
    data(bar)
    expect_that(foo$col[1], equals(bar$col[1]))

Et je voudrais que les exemples de la documentation ressemblent à ceci:

    #' @examples
    #' data(foo)
    #' functionThatUsesFoo(foo)

Si j'essaie d'appeler les données (FOO) lors du développement du package, j'obtiens l'erreur "Set" Foo 'introuvable ". Cependant, si je construis le package, l'installez et le charge - je peux faire fonctionner les tests et les exemples.

Mes roulements actuels ne consistent pas à exécuter l'exemple:

    #' @examples
    #' \dontrun{data(foo)}
    #' \dontrun{functionThatUsesFoo(foo)}

Et dans les tests, préchargez les données à l'aide d'un chemin spécifique à mon ordinateur local:

    foo <- read.delim(pathToFoo, sep="\t", fill = TRUE, comment.char="#")
    bar <- read.delim(pathToBar, sep=";", fill = TRUE, comment.char="#"
    expect_that(foo$col[1], equals(bar$col[1]))

Cela ne semble pas idéal - d'autant plus que je collabore avec les autres - exigeant que tous les collaborateurs aient les mêmes chemins complets pour «foo» et «bar». De plus, les exemples de la documentation semblent ne pas être exécutés, même si une fois le package installé, ils le peuvent.

Aucune suggestion? Merci beaucoup.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top