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@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.