Hi, I'm currently in the process of writing an R-installation SOP for my company. As part of that process I'm using the recommendations from the 'R Installation and Administration' document, section 3.2, "Testing an installation". This is done on an XP machine, using the latest binary of 2.11.0. The binary is downloaded and then installed from the installer. I then start an Rgui.exe session with --vanilla enabled. At this point:> sessionInfo()R version 2.11.0 (2010-04-22) i386-pc-mingw32 locale: [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C LC_TIME=English_United States.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base Next I start testing, using the following: library(tools) testInstalledBasic(scope = 'devel') # Just checking devel for illustrative purposes Results displayed are as follows: running tests of consistency of as/is.* creating ?isas-tests.R? running code in ?isas-tests.R? comparing ?isas-tests.Rout? to ?isas-tests.Rout.save? ...running tests of random deviate generation -- fails occasionally running code in ?p-r-random-tests.R? comparing ?p-r-random-tests.Rout? to ?p-r-random-tests.Rout.save? ...running tests of primitives running code in ?primitives.R? FAILED Warning messages: 1: In system(paste("diff -bw", shQuote(a), shQuote(b))) : diff not found 2: In system(paste("diff -bw", shQuote(a), shQuote(b))) : diff not found In the tests directory, in primitives.rout.fail I see the following:> ## check that they do argument matching, or at least check names > except <- c("call", "switch", ".C", ".Fortran", ".Call", ".External",+ ".Call.graphics", ".External.graphics", ".subset", ".subset2", + ".primTrace", ".primUntrace", "lazyLoadDBfetch", + ".Internal", ".Primitive", "^", "|", "%*%", "rep", "seq.int", + ## these may not be enabled + "tracemem", "retracemem", "untracemem")> > for(f in ls(.GenericArgsEnv, all.names=TRUE)[-(1:15)])+ { + if (f %in% except) next + g <- get(f, envir = .GenericArgsEnv) + an <- names(formals(args(g))) + if(length(an) >0 && an[1] == "...") next + an <- an[an != "..."] + a <- rep(list(NULL), length(an)) + names(a) <- c("zZ", an[-1]) + res <- try(do.call(f, a), silent = TRUE) + m <- geterrmessage() + if(!grepl('does not match|unused argument', m)) + stop("failure on ", f) + } Error: failure on >Execution halted A quick check in the console gives this:> ls(.GenericArgsEnv, all.names = TRUE)[1] "!" "!=" "%%" "%/%" "&" "*" "+" [8] "-" "/" "<" "<=" "==" ">" ">=" [15] "Arg" "Conj" "Im" "Mod" "Re" "^" "abs" [22] "acos" "acosh" "all" "any" "as.character" "as.complex" "as.double" [29] "as.integer" "as.logical" "as.numeric" "as.raw" "as.real" "asin" "asinh" [36] "atan" "atanh" "c" "ceiling" "cos" "cosh" "cummax" [43] "cummin" "cumprod" "cumsum" "digamma" "dim" "dim<-" "dimnames" [50] "dimnames<-" "exp" "expm1" "floor" "gamma" "is.array" "is.finite" [57] "is.infinite" "is.matrix" "is.na" "is.nan" "is.numeric" "length" "length<-" [64] "levels<-" "lgamma" "log" "log10" "log1p" "log2" "max" [71] "min" "names" "names<-" "prod" "range" "rep" "round" [78] "seq.int" "sign" "signif" "sin" "sinh" "sqrt" "sum" [85] "tan" "tanh" "trigamma" "trunc" "xtfrm" "|" Which confuses me, because the calling code in tests\\primitives.R removes the first 15 elements, which includes ">=" which the test is failing on. To check (and because testInstalledBasic is calling out to a separate, new R process), I repeated the testInstalledBasic functionality ex-function; so in a clean session I ran the following: ### Clean session ### Sys.setenv(LANGUAGE = "C") Sys.setenv(R_DEFAULT_PACKAGES = "") Sys.setenv(SRCDIR = ".") oldwd <- setwd(file.path(R.home(), 'tests')) source('primitives.R', echo = T) setwd(oldwd) # Fails with: Error in eval.with.vis(expr, envir, enclos) : failure on > Now my checking gives:> ls(.GenericArgsEnv, all.names = TRUE)[1] "-" "!" "!=" "%%" "%/%" "&" "*" "/" [9] "^" "|" "+" "<" "<=" "==" ">" ">=" [17] "abs" "acos" "acosh" "all" "any" "Arg" "as.character" "as.complex" [25] "as.double" "as.integer" "as.logical" "as.numeric" "as.raw" "as.real" "asin" "asinh" [33] "atan" "atanh" "c" "ceiling" "Conj" "cos" "cosh" "cummax" [41] "cummin" "cumprod" "cumsum" "digamma" "dim" "dim<-" "dimnames" "dimnames<-" [49] "exp" "expm1" "floor" "gamma" "Im" "is.array" "is.finite" "is.infinite" [57] "is.matrix" "is.na" "is.nan" "is.numeric" "length" "length<-" "levels<-" "lgamma" [65] "log" "log10" "log1p" "log2" "max" "min" "Mod" "names" [73] "names<-" "prod" "range" "Re" "rep" "round" "seq.int" "sign" [81] "signif" "sin" "sinh" "sqrt" "sum" "tan" "tanh" "trigamma" [89] "trunc" "xtfrm" Now ">=" is the 16th element of the environment, which suggests that this is why my testing is failing. Am I doing something wrong? Should the actual code in tests\\primitives.R be: for(f in ls(.GenericArgsEnv, all.names=TRUE)[-(1:16)]) instead of 1:15 (or be OS dependent)? Any comments and help welcomed. If I'm unclear in any steps I've taken please feel free to correct me. Jim Price. Cardiome Pharma Corp. -- View this message in context: http://r.789695.n4.nabble.com/testInstalledBasic-question-tp2131680p2131680.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
The code contains
## We need to force C collation: might not work
Sys.setlocale("LC_COLLATE", "C")
It seems that is not working for you. Try setting LC_COLLATE=C in the
environment before running the tests.
You do also need diff (from Rtools) in your path for the best results.
On Wed, 5 May 2010, Jim Price wrote:
>
> Hi,
>
> I'm currently in the process of writing an R-installation SOP for my
> company. As part of that process I'm using the recommendations from the
'R
> Installation and Administration' document, section 3.2, "Testing
an
> installation". This is done on an XP machine, using the latest binary
of
> 2.11.0.
>
> The binary is downloaded and then installed from the installer. I then
start
> an Rgui.exe session with --vanilla enabled. At this point:
>
>
>> sessionInfo()
> R version 2.11.0 (2010-04-22)
> i386-pc-mingw32
>
> locale:
> [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United
> States.1252 LC_MONETARY=English_United States.1252
> [4] LC_NUMERIC=C LC_TIME=English_United
> States.1252
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
>
>
> Next I start testing, using the following:
>
>
> library(tools)
> testInstalledBasic(scope = 'devel') # Just checking devel for
illustrative
> purposes
>
>
> Results displayed are as follows:
>
>
> running tests of consistency of as/is.*
> creating ?isas-tests.R?
> running code in ?isas-tests.R?
> comparing ?isas-tests.Rout? to ?isas-tests.Rout.save? ...running tests of
> random deviate generation -- fails occasionally
> running code in ?p-r-random-tests.R?
> comparing ?p-r-random-tests.Rout? to ?p-r-random-tests.Rout.save?
> ...running tests of primitives
> running code in ?primitives.R?
> FAILED
> Warning messages:
> 1: In system(paste("diff -bw", shQuote(a), shQuote(b))) : diff
not found
> 2: In system(paste("diff -bw", shQuote(a), shQuote(b))) : diff
not found
>
>
>
> In the tests directory, in primitives.rout.fail I see the following:
>
>
>
>> ## check that they do argument matching, or at least check names
>> except <- c("call", "switch", ".C",
".Fortran", ".Call", ".External",
> + ".Call.graphics", ".External.graphics",
".subset", ".subset2",
> + ".primTrace", ".primUntrace",
"lazyLoadDBfetch",
> + ".Internal", ".Primitive", "^",
"|", "%*%", "rep", "seq.int",
> + ## these may not be enabled
> + "tracemem", "retracemem",
"untracemem")
>>
>> for(f in ls(.GenericArgsEnv, all.names=TRUE)[-(1:15)])
> + {
> + if (f %in% except) next
> + g <- get(f, envir = .GenericArgsEnv)
> + an <- names(formals(args(g)))
> + if(length(an) >0 && an[1] == "...") next
> + an <- an[an != "..."]
> + a <- rep(list(NULL), length(an))
> + names(a) <- c("zZ", an[-1])
> + res <- try(do.call(f, a), silent = TRUE)
> + m <- geterrmessage()
> + if(!grepl('does not match|unused argument', m))
> + stop("failure on ", f)
> + }
> Error: failure on >> Execution halted
>
>
>
> A quick check in the console gives this:
>
>
>
>> ls(.GenericArgsEnv, all.names = TRUE)
> [1] "!" "!=" "%%"
"%/%" "&"
> "*" "+"
> [8] "-" "/" "<"
"<=" "=="
> ">" ">="
> [15] "Arg" "Conj" "Im"
"Mod" "Re"
> "^" "abs"
> [22] "acos" "acosh" "all"
"any"
> "as.character" "as.complex" "as.double"
> [29] "as.integer" "as.logical"
"as.numeric" "as.raw" "as.real"
> "asin" "asinh"
> [36] "atan" "atanh" "c"
"ceiling" "cos"
> "cosh" "cummax"
> [43] "cummin" "cumprod" "cumsum"
"digamma" "dim"
> "dim<-" "dimnames"
> [50] "dimnames<-" "exp" "expm1"
"floor" "gamma"
> "is.array" "is.finite"
> [57] "is.infinite" "is.matrix" "is.na"
"is.nan"
> "is.numeric" "length" "length<-"
> [64] "levels<-" "lgamma" "log"
"log10" "log1p"
> "log2" "max"
> [71] "min" "names"
"names<-" "prod" "range"
> "rep" "round"
> [78] "seq.int" "sign" "signif"
"sin" "sinh"
> "sqrt" "sum"
> [85] "tan" "tanh" "trigamma"
"trunc" "xtfrm"
> "|"
>
>
>
> Which confuses me, because the calling code in tests\\primitives.R removes
> the first 15 elements, which includes ">=" which the test is
failing on.
>
>
>
> To check (and because testInstalledBasic is calling out to a separate, new
R
> process), I repeated the testInstalledBasic functionality ex-function; so
in
> a clean session I ran the following:
>
>
> ### Clean session ###
>
>
> Sys.setenv(LANGUAGE = "C")
> Sys.setenv(R_DEFAULT_PACKAGES = "")
> Sys.setenv(SRCDIR = ".")
>
> oldwd <- setwd(file.path(R.home(), 'tests'))
>
> source('primitives.R', echo = T)
>
> setwd(oldwd)
>
>
> # Fails with: Error in eval.with.vis(expr, envir, enclos) : failure on
>>
>
> Now my checking gives:
>
>
>> ls(.GenericArgsEnv, all.names = TRUE)
> [1] "-" "!" "!="
"%%" "%/%"
> "&" "*" "/"
> [9] "^" "|" "+"
"<" "<="
> "==" ">" ">="
> [17] "abs" "acos" "acosh"
"all" "any"
> "Arg" "as.character" "as.complex"
> [25] "as.double" "as.integer"
"as.logical" "as.numeric" "as.raw"
> "as.real" "asin" "asinh"
> [33] "atan" "atanh" "c"
"ceiling" "Conj"
> "cos" "cosh" "cummax"
> [41] "cummin" "cumprod" "cumsum"
"digamma" "dim"
> "dim<-" "dimnames"
"dimnames<-"
> [49] "exp" "expm1" "floor"
"gamma" "Im"
> "is.array" "is.finite" "is.infinite"
> [57] "is.matrix" "is.na" "is.nan"
"is.numeric" "length"
> "length<-" "levels<-" "lgamma"
> [65] "log" "log10" "log1p"
"log2" "max"
> "min" "Mod" "names"
> [73] "names<-" "prod" "range"
"Re" "rep"
> "round" "seq.int" "sign"
> [81] "signif" "sin" "sinh"
"sqrt" "sum"
> "tan" "tanh" "trigamma"
> [89] "trunc" "xtfrm"
>
>
>
> Now ">=" is the 16th element of the environment, which
suggests that this is
> why my testing is failing.
>
>
>
>
> Am I doing something wrong? Should the actual code in tests\\primitives.R
> be: for(f in ls(.GenericArgsEnv, all.names=TRUE)[-(1:16)]) instead of 1:15
> (or be OS dependent)?
>
>
> Any comments and help welcomed. If I'm unclear in any steps I've
taken
> please feel free to correct me.
>
>
>
> Jim Price.
> Cardiome Pharma Corp.
>
>
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/testInstalledBasic-question-tp2131680p2131680.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595