[R-pkg-devel] try() in R CMD check --as-cran

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Fri Jun 7 19:56:59 CEST 2019


I've put my tiny package back up, but it likely is doing same
thing as Bill Dunlap's. I took it off as a cleanup when I thought
the issue resolved.

http://web.ncf.ca/fh448/jfiles/fchk_2019-6.5.tar.gz

Seems I've disturbed the ant's nest.

JN



On 2019-06-07 1:53 p.m., William Dunlap wrote:
> I've attached a package, ppp_0.1.tar.gz, which probably will not get through to R-help, that illustrates this.
> It contains one function which, by default, triggers a condition-length>1 issue:
>    f <- function(x = 1:3)
>    {
>        if (x > 1) {
>            x <- -x
>        }
>        stop("this function always gives an error")
>    }
> and the help file example is
>    try(f())
> 
> Then 
>    env _R_CHECK_LENGTH_1_CONDITION_=abort,verbose R-3.6.0 CMD check --as-cran ppp_0.1.tar.gz
> results in
> * checking examples ... ERROR
> Running examples in ‘ppp-Ex.R’ failed
> The error most likely occurred in:
> 
>> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
>> ### Name: f
>> ### Title: Cause an error
>> ### Aliases: f
>> ### Keywords: error
>>
>> ### ** Examples
>>
>> try(f())
>  ----------- FAILURE REPORT --------------
>  --- failure: the condition has length > 1 ---
>  --- srcref ---
> :
>  --- package (from environment) ---
> ppp
>  --- call from context ---
> f()
>  --- call from argument ---
> if (x > 1) {
>     x <- -x
> }
>  --- R stacktrace ---
> where 1: f()
> where 2: doTryCatch(return(expr), name, parentenv, handler)
> where 3: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> where 4: tryCatchList(expr, classes, parentenv, handlers)
> where 5: tryCatch(expr, error = function(e) {
>     call <- conditionCall(e)
>     if (!is.null(call)) {
>         if (identical(call[[1L]], quote(doTryCatch)))
>             call <- sys.call(-4L)
>         dcall <- deparse(call)[1L]
>         prefix <- paste("Error in", dcall, ": ")
>         LONG <- 75L
>         sm <- strsplit(conditionMessage(e), "\n")[[1L]]
>         w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")
>         if (is.na <http://is.na>(w))
>             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],
>                 type = "b")
>         if (w > LONG)
>             prefix <- paste0(prefix, "\n  ")
>     }
>     else prefix <- "Error : "
>     msg <- paste0(prefix, conditionMessage(e), "\n")
>     .Internal(seterrmessage(msg[1L]))
>     if (!silent && isTRUE(getOption("show.error.messages"))) {
>         cat(msg, file = outFile)
>         .Internal(printDeferredWarnings())
>     }
>     invisible(structure(msg, class = "try-error", condition = e))
> })
> where 6: try(f())
> 
>  --- value of length: 3 type: logical ---
> [1] FALSE  TRUE  TRUE
>  --- function from context ---
> function (x = 1:3)
> {
>     if (x > 1) {
>         x <- -x
>     }
>     stop("this function always gives an error")
> }
> <bytecode: 0x4f413d0>
> <environment: namespace:ppp>
>  --- function search by body ---
> Function f in namespace ppp has this body.
>  ----------- END OF FAILURE REPORT --------------
> Fatal error: the condition has length > 1
> * checking PDF version of manual ... OK
> * DONE
> 
> Status: 1 ERROR, 1 NOTE
> See
>   ‘/tmp/bill/ppp.Rcheck/00check.log’
> for details.
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com <http://tibco.com>
> 
> 
> On Fri, Jun 7, 2019 at 10:21 AM Duncan Murdoch <murdoch.duncan using gmail.com <mailto:murdoch.duncan using gmail.com>> wrote:
> 
>     On 07/06/2019 12:32 p.m., William Dunlap wrote:
>     > The length-condition-not-equal-to-one checks will cause R to shutdown
>     > even if the code in a tryCatch().
> 
>     That's strange.  I'm unable to reproduce it with my tries, and John's
>     package is no longer online.  Do you have an example I could look at?
> 
>     Duncan Murdoch
> 
>     >
>     > Bill Dunlap
>     > TIBCO Software
>     > wdunlap tibco.com <http://tibco.com> <http://tibco.com>
>     >
>     >
>     > On Fri, Jun 7, 2019 at 7:47 AM Duncan Murdoch <murdoch.duncan using gmail.com <mailto:murdoch.duncan using gmail.com>
>     > <mailto:murdoch.duncan using gmail.com <mailto:murdoch.duncan using gmail.com>>> wrote:
>     >
>     >     On 07/06/2019 9:46 a.m., J C Nash wrote:
>     >      > Should try() not stop those checks from forcing an error?
>     >
>     >     try(stop("msg"))  will print the error message, but won't stop
>     >     execution.  Presumably the printed message is what is causing you
>     >     problems.  If you want to suppress that, use
>     >
>     >     try(stop("msg"), silent = TRUE)
>     >
>     >     Duncan Murdoch
>     >
>     >      >
>     >      > I recognize that this is the failure -- it is indeed the check
>     >     I'm trying to
>     >      > catch -- but I don't want tests of such checks to fail my package.
>     >      >
>     >      > JN
>     >      >
>     >      > On 2019-06-07 9:31 a.m., Sebastian Meyer wrote:
>     >      >> The failure stated in the R CMD check failure report is:
>     >      >>
>     >      >>>   --- failure: length > 1 in coercion to logical ---
>     >      >>
>     >      >> This comes from --as-cran performing useful extra checks via
>     >     setting the
>     >      >> environment variable _R_CHECK_LENGTH_1_LOGIC2_, which means:
>     >      >>
>     >      >>> check if either argument of the binary operators && and || has
>     >     length greater than one.
>     >      >>
>     >      >> (see
>     >     https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Tools)
>     >      >>
>     >      >> The failure report also states the source of the failure:
>     >      >>
>     >      >>>   --- call from context ---
>     >      >>> fchk(x, benbad, trace = 3, y)
>     >      >>>   --- call from argument ---
>     >      >>> is.infinite(fval) || is.na <http://is.na> <http://is.na>(fval)
>     >      >>
>     >      >> The problem is that both is.infinite(fval) and is.na <http://is.na>
>     >     <http://is.na>(fval) return
>     >      >> vectors of length 10 in your test case:
>     >      >>
>     >      >>>   --- value of length: 10 type: logical ---
>     >      >>>   [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
>     >      >>
>     >      >> The || operator works on length 1 Booleans. Since fval can be of
>     >     length
>     >      >> greater than 1 at that point, the proper condition seems to be:
>     >      >>
>     >      >> any(is.infinite(fval)) || any(is.na <http://is.na> <http://is.na>(fval))
>     >      >>
>     >      >> Best regards,
>     >      >>
>     >      >>      Sebastian
>     >      >>
>     >      >>
>     >      >> Am 07.06.19 um 14:53 schrieb J C Nash:
>     >      >>> Sorry reply not quicker. For some reason I'm not getting
>     >     anything in the thread I started!
>     >      >>> I found the responses in the archives. Perhaps cc:
>     >     nashjc using uottawa.ca <mailto:nashjc using uottawa.ca> <mailto:nashjc using uottawa.ca <mailto:nashjc using uottawa.ca>> please.
>     >      >>>
>     >      >>> I have prepared a tiny (2.8K) package at
>     >      >>> http://web.ncf.ca/nashjc/jfiles/fchk_2019-6.5.tar.gz
>     >      >>>
>     >      >>> R CMD check --> OK
>     >      >>>
>     >      >>> R CMD check --as-cran --> 1 ERROR, 1 NOTE
>     >      >>>
>     >      >>> The error is in an example:
>     >      >>>
>     >      >>>> benbad<-function(x, y){
>     >      >>>>     # y may be provided with different structures
>     >      >>>>     f<-(x-y)^2
>     >      >>>> } # very simple, but ...
>     >      >>>>
>     >      >>>> y<-1:10
>     >      >>>> x<-c(1)
>     >      >>>> cat("test benbad() with y=1:10, x=c(1)\n")
>     >      >>>> tryfc01 <- try(fc01<-fchk(x, benbad, trace=3, y))
>     >      >>>> print(tryfc01)
>     >      >>>> print(fc01)
>     >      >>>
>     >      >>> There's quite a lot of output, but it doesn't make much sense
>     >     to me, as
>     >      >>> it refers to code that I didn't write.
>     >      >>>
>     >      >>> The function fchk is attempting to check if functions provided for
>     >      >>> optimization do not violate some conditions e.g., character
>     >     rather than
>     >      >>> numeric etc.
>     >      >>>
>     >      >>> JN
>     >      >>>
>     >      >>>
>     >      >>> On 2019-06-07 8:44 a.m., J C Nash wrote:
>     >      >>>> Uwe Ligges ||gge@ @end|ng |rom @t using t|@t|k using tu-dortmund@de
>     >      >>>> Fri Jun 7 11:44:37 CEST 2019
>     >      >>>>
>     >      >>>>      Previous message (by thread): [R-pkg-devel] try() in R
>     >     CMD check --as-cran
>     >      >>>>      Next message (by thread): [R-pkg-devel] using package
>     >     data in package code
>     >      >>>>      Messages sorted by: [ date ] [ thread ] [ subject ] [
>     >     author ]
>     >      >>>>
>     >      >>>> Right, what problem are you talking about? Can you tell us
>     >     which check
>     >      >>>> it is and what it actually complained about.
>     >      >>>> There is no check that looks at the sizes of x and y in
>     >     exypressions
>     >      >>>> such as
>     >      >>>> (x - y)^2.
>     >      >>>> as far as I know.
>     >      >>>>
>     >      >>>> Best,
>     >      >>>> Uwe
>     >      >>>>
>     >      >>>> On 07.06.2019 10:33, Berry Boessenkool wrote:
>     >      >>>>>
>     >      >>>>> Not entirely sure if this is what you're looking for:
>     >      >>>>>
>     >     https://github.com/wch/r-source/blob/trunk/src/library/tools/R/check.R
>     >      >>>>> It does contain --as-cran a few times and there's the
>     >     change-history:
>     >      >>>>>
>     >     https://github.com/wch/r-source/commits/trunk/src/library/tools/R/check.R
>     >      >>>>>
>     >      >>>>> Regards,
>     >      >>>>> Berry
>     >      >>>>>
>     >      >>>>>
>     >      >>>>> ________________________________
>     >      >>>>> From: R-package-devel <r-package-devel-bounces using
>     >     r-project.org <http://r-project.org> <http://r-project.org>> on behalf of J C Nash
>     >     <profjcnash using gmail.com <http://gmail.com> <http://gmail.com>>
>     >      >>>>> Sent: Thursday, June 6, 2019 15:03
>     >      >>>>> To: List r-package-devel
>     >      >>>>> Subject: [R-pkg-devel] try() in R CMD check --as-cran
>     >      >>>>>
>     >      >>>>> After making a small fix to my optimx package, I ran my usual
>     >     R CMD check --as-cran.
>     >      >>>>>
>     >      >>>>> To my surprise, I got two ERRORs unrelated to the change. The
>     >     errors popped up in
>     >      >>>>> a routine designed to check the call to the user objective
>     >     function. In particular,
>     >      >>>>> one check is that the size of vectors is the same in
>     >     expressions like (x - y)^2.
>     >      >>>>> This works fine with R CMD check, but the --as-cran seems to
>     >     have changed and it
>     >      >>>>> pops an error, even when the call is inside try(). The irony
>     >     that the routine in
>     >      >>>>> question is intended to avoid problems like this is not lost
>     >     on me.
>     >      >>>>>
>     >      >>>>> I'm working on a small reproducible example, but it's not
>     >     small enough yet.
>     >      >>>>> In the meantime, I'm looking for the source codes of the
>     >     scripts for "R CMD check" and
>     >      >>>>> "R CMD check --as-cran" so I can work out why there is this
>     >     difference, which seems
>     >      >>>>> to be recent.
>     >      >>>>>
>     >      >>>>> Can someone send/post a link? I plan to figure this out and
>     >     provide feedback,
>     >      >>>>> as I suspect it is going to affect others. However, it may be
>     >     a few days or even
>     >      >>>>> weeks if past experience is a guide.
>     >      >>>>>
>     >      >>>>> JN
>     >      >>>>>
>     >      >>>>> ______________________________________________
>     >      >>>>> R-package-devel using r-project.org <http://r-project.org> <http://r-project.org>
>     >     mailing list
>     >      >>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >      >>>>>
>     >      >>>>>   [[alternative HTML version deleted]]
>     >      >>>>>
>     >      >>>>> ______________________________________________
>     >      >>>>> R-package-devel using r-project.org <http://r-project.org> <http://r-project.org>
>     >     mailing list
>     >      >>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >      >>>>>
>     >      >>>>
>     >      >>>
>     >      >>> ______________________________________________
>     >      >>> R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>
>     >     <mailto:R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>> mailing list
>     >      >>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >      >>>
>     >      >>
>     >      >> ______________________________________________
>     >      >> R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>
>     >     <mailto:R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>> mailing list
>     >      >> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >      >>
>     >      >
>     >      > ______________________________________________
>     >      > R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>
>     >     <mailto:R-package-devel using r-project.org <mailto:R-package-devel using r-project.org>> mailing list
>     >      > https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >      >
>     >
>     >     ______________________________________________
>     >     R-package-devel using r-project.org <mailto:R-package-devel using r-project.org> <mailto:R-package-devel using r-project.org
>     <mailto:R-package-devel using r-project.org>>
>     >     mailing list
>     >     https://stat.ethz.ch/mailman/listinfo/r-package-devel
>     >
>



More information about the R-package-devel mailing list