[Bioc-devel] [BioC] NAMESPACES, export, and unit tests

hpages at fhcrc.org hpages at fhcrc.org
Tue May 2 05:28:41 CEST 2006

Hi Seth,

Quoting Seth Falcon <sfalcon at fhcrc.org>:

> Herve Pages <hpages at fhcrc.org> writes:
> > I'm asking because there seems to be other things that you can't do
> > in the unit tests (like defining S4 classes or dispatching on an S4
> > class defined somewhere in the package, I don't remember exactly).
> > I'm wondering what's the motivation behind these restrictions...
> If you are interested, how about some specifics on what doesn't work.

Yes sorry, I could not remember exactly what I've tried once and that
didn't work for me. Now I found it: you can't use setGeneric() or
setMethod() in a test unit. For example, you can't have this in your
runit-toto.R file:

  setMethod("==", signature(e1="BString", e2="DNAString"),
    function(e1, e2) { ... }

at the top level or nested in one of your test_totoN() functions.
Even if you don't have a NAMESPACE.
Or you'll get something like:

  Executing test function test_totoN  ...
  Error in setMethod("==", signature(e1 = "BString", e2 = "DNAString"),  :
  the environment 'RUnit' is locked; cannot assign methods for function '=='

> I don't think there is any "motivation" behind the observed
> restrictions.  Certainly there are limitations of the current S4
> implementation, but I do not believe anyone has sat down and said,
> "let's make this particular thing not work for people wanting to do
> unit testing".

My comment was more about the motivations on the RUnit side than
on the S4 implementation side. Lets's keep the S4 implementation
discussion for another day ;-)


More information about the Bioc-devel mailing list