R разработка пакета биокондуктора с TDD (RUnit)
Я пытаюсь следовать рекомендациям BioConductor RUnit. Я следовал минимальной настройке, поэтому у меня есть:
Suggests: RUnit, BiocGenerics
в описании
BiocGenerics:::testPackage("MyPackage")
в MyPackage/tests/runTests.R
и некоторые файлы test_XXX.R в MyPackage/inst/unitTests/
Если я запускаю один тестовый файл с:
library(RUnit)
source("LIBRARY FILES")
source("MyPackage/inst/unitTests/test_getKeywordValue.R")
test_getKeywordValue()
Тестовый запуск (и происходит сбой при необходимости), но если я запускаю
R CMD check MyPackage
Команда говорит:
* checking tests ...
Running ‘runTests.R’
OK
Но не запускайте мои тесты в MyPackage/inst/unitTests
Каталог...
Чего мне не хватает?
Platform: x86_64-apple-darwin9.8.0
R version 2.15.2 (2012-10-26)
2 ответа
Задача решена.
Вот история:
В свой пакет я поместил файл.Rinstignore с этой строкой:
test/*
Я ожидал совпадения в стиле глобуса (как.gitignore), но вместо этого, как RShowDoc("R-exts")
сказать:
.Rinstignore выполняет сопоставление регулярных выражений в стиле perl.
Итак, мое правило test/*
был интерпретирован R как:
Ignore all files starting with test followed by 0 or more '/'
(часть /* была интерпретирована как совпадение ноль или более / символов)
Быстрая проверка с grep
показать, как это работает:
grep("test/*", "inst/unitTests/test_bar.R",perl=TRUE)
[1] 1
Удаление линии
test/*
от.Rinstignore решил проблему.
Я не знаю руководящих принципов BioC по этому вопросу, но у меня есть несколько пакетов CRAN, в которых используется схема, впервые разработанная Мартином Маечлером для некоторых пакетов Rmetrics.
Это описано в этом посте R Wiki, и вы можете посмотреть мои варианты этого, скажем, в RcppArmadillo или RcppGSL или некоторых других пакетах. Ключ часто файл tests/doRUnit.R
который выполняет необходимые повороты для запуска из источников или из установленного пакета.