From gregory.warnes at novartis.com  Tue Sep  4 20:36:43 2012
From: gregory.warnes at novartis.com (Warnes, Gregory)
Date: Tue, 4 Sep 2012 18:36:43 +0000
Subject: [Rd] if(--as-cran)?
In-Reply-To: <5045F660.6030706@gmail.com>
Message-ID: <0CAEE2B1235DF643B0F5E1EAE1487B530946C41E@023-CH1MPN1-043.023d.mgd.msft.net>


On 9/4/12 8:38 AM, "Duncan Murdoch" <murdoch.duncan at gmail.com> wrote:


>On 04/09/2012 8:20 AM, Terry Therneau wrote:
>>
>> On 09/04/2012 05:00 AM, r-devel-request at r-project.org wrote:
>> > The issue is not just about "CRAN" vs "off CRAN".
>> > It is good to think about a more general scheme of
>> > "light testing" vs "normal testing" vs "extensive testing",
>> > e.g.,  for the situation where the package implements
>> > (simulation/bootstrap/ ..) based inference, and the developer
>> > (but not only) should be able to run the extensive tests.
>> >
>> > Martin
>>
>> I agree with Martin.  A mechanism to specify testing level would be the
>>best.
>> Then CRAN can choose to set that variable to "3" say, with level 1 for
>>extensive and 2 for
>> usual.
>>     I'm quite willing to put up with the nuisance of print()
>>enclosures.  I prefer it to
>> having yet another way to subvert the evaluation model.
>>
>>     I'm a believer in testing everything possible in my packages, and
>>wear it it as a badge
>> of honor that the survival package has 4 lines of R code in the tests
>>directory for every
>> 3 in the R directory.  But CRAN only needs to run a small subset of
>>this.
>
>We have a mechanism to specify testing level:  the --as-cran flag. We
>could presumably make it more elaborate by adding other flags, or option
>levels, or whatever.
>
>What I think we shouldn't do is try to create an R-level test that says
>
>  if (testingLevel() > 3) {
>    doSomething
>}
>
>because tests can be turned on and off, individually.  If testingLevel 3
>specified tests (A, B, C), then is our testingLevel higher if we are
>running tests (A, B, D, E, F, G)?  Why not just test for the presence of
>whichever test is most relevant to that particular code block, e.g.
>
>  if ("D" %in% tests()) {
>   doSomething
>}


I would prefer the testingLevel() approach of the "D" %in% tests()
approach, since testingLevel() provides a natural way to add successively
greater test details without having to dig into the code to determine the
set of tests.  

-Greg



[Rd] if(--as-cran)?
Warnes, Gregory