Можно ли использовать данные пакета R в testthat tests или run_examples ()?

Я работаю над разработкой пакета R, используя devtools, testthat и roxygen2. У меня есть пара наборов данных в папке данных (foo.txt и bar.csv).

Моя файловая структура выглядит так:

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

Я почти уверен, что 'foo' и 'bar' задокументированы правильно:

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

Я хотел бы использовать данные из 'foo' и 'bar' в своей документации примеры и юнит-тесты.

Например, я хотел бы использовать эти наборы данных в моем testthat, вызывая:

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

И я хотел бы, чтобы примеры в документации выглядели так:

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

Если я попытаюсь вызвать data (foo ) при разработке пакета я получаю сообщение об ошибке «data set 'foo' not found». Однако, если я соберу пакет, установлю его и загрузю - тогда я смогу заставить тесты и примеры работать.

Мои текущие обходные пути заключаются в том, чтобы не запускать пример:

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

А в тестах предварительно загружать данные, используя путь, специфичный для моего локального компьютера:

    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]))

Это не кажется идеальным - тем более, что я ' m сотрудничать с другими - требуя, чтобы у всех соавторов были одинаковые полные пути к 'foo' и 'bar'. Кроме того, примеры в документации выглядят так, как будто их невозможно запустить, хотя после установки пакета они могут.

Есть предложения? Большое спасибо.

31
задан ldecicco 17 January 2012 в 16:49
поделиться