Hello, I am trying to follow the bioconductor RUnit guidelines (http://www.bioconductor.org/developers/unitTesting-guidelines/#duringDevelopment) I have followed the the minimal setup so I have: Suggests: RUnit, BiocGenerics in DESCRIPTION BiocGenerics:::testPackage("MyPackage") in MyPackage/tests/runTests.R and some test_XXX.R files in MyPackage/inst/unitTests/ If I run a single test files with: library(RUnit) source("LIBRARY FILES") source("MyPackage/inst/unitTests/test_getKeywordValue.R") test_getKeywordValue() The test run (and fails when need to fail), but if I run R CMD check MyPackage The command say: * checking tests ... Running ?runTests.R? OK But don't run my tests in MyPackage/inst/unitTests directory... What I missing? Platform: x86_64-apple-darwin9.8.0 R version 2.15.2 (2012-10-26) Best Regards and thanks in Advance ----------------------------------------------------------- PLEASE NOTE MY NEW EMAIL ADDRESS ----------------------------------------------------------- ----------------------------------------------------- Davide Rambaldi, PhD. ----------------------------------------------------- IEO ~ MolMed [e] davide.rambaldi at ieo.eu [e] davide.rambaldi at gmail.com
[Bioc-devel] R: developing a bioconductor package with TDD (RUnit)
4 messages · Davide Rambaldi, Martin Morgan
On 01/18/2013 08:26 AM, Davide Rambaldi wrote:
Hello, I am trying to follow the bioconductor RUnit guidelines (http://www.bioconductor.org/developers/unitTesting-guidelines/#duringDevelopment) I have followed the the minimal setup so I have: Suggests: RUnit, BiocGenerics in DESCRIPTION BiocGenerics:::testPackage("MyPackage") in MyPackage/tests/runTests.R and some test_XXX.R files in MyPackage/inst/unitTests/ If I run a single test files with: library(RUnit) source("LIBRARY FILES") source("MyPackage/inst/unitTests/test_getKeywordValue.R") test_getKeywordValue()
To me this looks ok. Are you using R-devel and current packages (output of
sessionInfo())? After installing your package, does
R --vanilla -e " BiocGenerics:::testPackage('MyPackage')"
do the right thing? After running R CMD check, are there any hints in the file
MyPackage.Rcheck/tests/runTests.Rout
?
The test run (and fails when need to fail), but if I run R CMD check MyPackage The command say: * checking tests ... Running ?runTests.R? OK But don't run my tests in MyPackage/inst/unitTests directory... What I missing? Platform: x86_64-apple-darwin9.8.0 R version 2.15.2 (2012-10-26) Best Regards and thanks in Advance ----------------------------------------------------------- PLEASE NOTE MY NEW EMAIL ADDRESS ----------------------------------------------------------- ----------------------------------------------------- Davide Rambaldi, PhD. ----------------------------------------------------- IEO ~ MolMed [e] davide.rambaldi at ieo.eu [e] davide.rambaldi at gmail.com
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793
2 days later
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/bioc-devel/attachments/20130121/6125787e/attachment.pl>
On 01/21/2013 04:01 AM, Davide Rambaldi wrote:
Hi all, here is my followup:
The output of flowFit.Rcheck/tests/runTests.Rout is:
RUNIT TEST PROTOCOL -- Mon Jan 21 11:22:51 2013
***********************************************
Number of test functions: 0
Number of errors: 0
Number of failures: 0
1 Test Suite :
flowFit RUnit Tests - 0 test functions, 0 errors, 0 failures
Number of test functions: 0
Number of errors: 0
Number of failures: 0
No test run ?. :-(
RESTARTING FROM SCRATCH with a package skeleton:
require(stats)
## two functions and two "data sets" :
f <- function(x, y) x+y
g <- function(x, y) x-y
d <- data.frame(a = 1, b = 2)
e <- rnorm(1000)
package.skeleton(list = c("f","g","d","e"), name = "RUnitTest")
And inside the package dir:
mkdir tests
mkdir -p inst/unitTests
touch inst/unitTests/test_iWantToFail.R
more inst/unitTests/test_iWantToFail.R
test_f <- function()
{
checkTrue(FALSE)
}
OUTPUT is OK:
RUnitTest RUnit Tests - 1 test function, 0 errors, 1 failure
FAILURE in test_f: Error in checkTrue(FALSE) : Test not TRUE
So where is the problem in my library?
After a session of "find the differences" game I finally got the problem:
Problem is in the .Rinstignore file.
here is my .Rinstignore in the ROOT directory of the package:
inst/doc/.*[.]bib$
inst/doc/Makefile
test/*
TODO
README
.DS_Store
.git/*
.project
.Rapp.history
.Rhistory
The problematic line is:
test/*
If I remove the line, the test runs and fail when need to fail with R CMD check:
R CMD check flowFit
[?]
Last 13 lines of output:
flowFit RUnit Tests - 1 test function, 0 errors, 1 failure
FAILURE in test_failing: Error in checkTrue(FALSE) : Test not TRUE
Test files with failing tests
test_iWantToFail.R
test_failing
Error in BiocGenerics:::testPackage("flowFit") :
unit tests failed for package flowFit
Execution halted
Strange thing: i put test/* in .Rinstignore, but R is ignoring the directory inst/unitTests/* is this the expected behavior?
Anyway, I can test now and I am happy :-)
Glad you sorted that out. RShowDoc("R-exts") says that .Rinstignore does
perl-style regular expression matching. The '/*' part of your pattern says
'match zero or more / characters' whereas you were probably expecting glob-style
matching, '/' followed by anything. The Writing R Extensions manual says, in a
footnote, that the pattern matching is case-insensitive on Windows (probably
this isn't a good design decision, but beside the point), which would NOT
exclude unitTests on your MacOS but would exclude the individual test_.*R files
> grep("test/*", c("inst/unitTests/bar", "inst/unitTests/test_bar.R"),
perl=TRUE)
[1] 2
So yes, it would seem like you were getting what you asked for!
Martin
As soon as I get some feedback about this error, I will post an answer to my own question in stackoverflow: http://stackoverflow.com/questions/14403181/r-developing-a-bioconductor-package-with-tdd-runit Thanks for help. If you need more info about my setup, here is the sessionInfo() R version 2.15.2 (2012-10-26) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] flowFit_0.3.1 loaded via a namespace (and not attached): [1] Biobase_2.18.0 BiocGenerics_0.4.0 feature_1.2.8 flowCore_1.24.0 [5] gdata_2.12.0 gplots_2.11.0 graph_1.36.1 gtools_2.7.0 [9] ks_1.8.11 kza_2.01 MASS_7.3-23 minpack.lm_1.1-6 [13] rrcov_1.3-02 stats4_2.15.2 tools_2.15.2 Regards Davide Rambaldi On Jan 18, 2013, at 6:43 PM, Martin Morgan wrote:
On 01/18/2013 08:26 AM, Davide Rambaldi wrote:
Hello, I am trying to follow the bioconductor RUnit guidelines (http://www.bioconductor.org/developers/unitTesting-guidelines/#duringDevelopment) I have followed the the minimal setup so I have: Suggests: RUnit, BiocGenerics in DESCRIPTION BiocGenerics:::testPackage("MyPackage") in MyPackage/tests/runTests.R and some test_XXX.R files in MyPackage/inst/unitTests/ If I run a single test files with: library(RUnit) source("LIBRARY FILES") source("MyPackage/inst/unitTests/test_getKeywordValue.R") test_getKeywordValue()
To me this looks ok. Are you using R-devel and current packages (output of sessionInfo())? After installing your package, does
R --vanilla -e " BiocGenerics:::testPackage('MyPackage')"
do the right thing? After running R CMD check, are there any hints in the file
MyPackage.Rcheck/tests/runTests.Rout
?
The test run (and fails when need to fail), but if I run R CMD check MyPackage The command say: * checking tests ... Running ?runTests.R? OK But don't run my tests in MyPackage/inst/unitTests directory... What I missing? Platform: x86_64-apple-darwin9.8.0 R version 2.15.2 (2012-10-26) Best Regards and thanks in Advance ----------------------------------------------------------- PLEASE NOTE MY NEW EMAIL ADDRESS ----------------------------------------------------------- ----------------------------------------------------- Davide Rambaldi, PhD. ----------------------------------------------------- IEO ~ MolMed [e] davide.rambaldi at ieo.eu [e] davide.rambaldi at gmail.com
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793