RUnit тестирование удаленного пакета - PullRequest
3 голосов
/ 15 декабря 2009

Я следую подсказкам к этому вопросу , но я нетерпелив и хотел бы выполнить свои тесты быстрее, не дожидаясь 30+ проверок, которые R CMD check src вызывает раньше checking tests.

я подумал, что могу добавить опцию --standalone к doRUnit.R, предложенному в этой странице R-wiki , чтобы я мог запускать модульные тесты независимо от R CMD.

Я добавил эти строки в скрипт:

  opt <- list(standalone=NULL)
  if(require("getopt", quietly=TRUE)) {
    ## path to unit tests may be given on command line, in which case
    ## we also want to move the cwd to this script
    opt <- getopt(matrix(c('standalone', 's', 0, "logical"),
                         ncol=4, byrow=TRUE))
    if(!is.null(opt$standalone)) {
      ## switch the cwd to the dir of this script
      args <- commandArgs()
      script.name <- substring(args[substring(args, 1, 7)=="--file="], 8, 1000)
      if(!is.null(script.name))
        setwd(dirname(script.name))
    }
  }

с этим изменением сценарий находит файлы test.*\.R независимо от каталога, из которого я вызываю сценарий.

остающаяся проблема сейчас заключается в том, что скрипт doRUnit.R загружает установленную библиотеку, но не source() файлы, составляющие библиотеку.

при условии, что я хочу загрузить каждый файл в каталоге R, как мне это сделать?

если у вас есть лучшая схема тестирования (удовлетворяющая требованиям "быстро", "удалено"), что это такое?

Ответы [ 2 ]

3 голосов
/ 15 декабря 2009

Возможно, вам придется вручную зациклить файлы в каталоге R и source() их, возможно, с чем-то вроде source(dir("/some/Path", pattern="*.R", full.names=TRUE).

Но у меня такое ощущение, что R CMD INSTALL делает немного больше. Вам может быть лучше работать с установленным кодом. И просто запустить ваши юнит-тесты напрямую, как вы делаете, и как подсказывает вики-страница, уже довольно хорошо. Так что нет лучшей схемы от меня. Но держите нас в курсе.

Изменить: Также обратите внимание, что R 2.10.1 дает нам новые возможности для ускорения R CMD INSTALL:

2.10.1 НОВЫЕ ОСОБЕННОСТИ

R CMD INSTALL имеет новые опции --no-R, --no-libs, --no-data, --no-help, --no-demo, --no-exec и --no-inst, чтобы отменить установку указанного часть пакета. Это предназначены для специальных целей (например, создание базы данных справочных страниц без полной установки всего пакеты).

Это тоже должно помочь.

0 голосов
/ 15 декабря 2009

дальнейших дополнений / исправлений в скрипте.

Теперь я могу вызвать его как doRUnit.R --standalone или вызвать его по R CMD check

      if(!is.null(script.name)) {
        setwd(dirname(script.name))
        path <- '../inst/RUnit/'
      }
.
.
.

  if (is.null(opt$standalone)) {
    cat("\nRunning unit tests of installed library\n")
    library(package=pkg, character.only=TRUE)
  } else {
    cat("\nRunning unit tests of uninstalled library\n")
    source(dir("../R/", pattern=".*\\.R", full.names=TRUE))
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...