Rev 81507 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
# File src/library/utils/tests/Sweave-tst.R# Part of the R package, https://www.R-project.org## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## A copy of the GNU General Public License is available at# https://www.R-project.org/Licenses/## Testing Sweave.proctime00 <- proc.time()library(utils)options(digits = 5) # to avoid trivial printed differencesoptions(show.signif.stars = FALSE) # avoid fancy quotes in o/pSweaveTeX <- function(file, ...) {if(!file.exists(file))stop("File", file, "does not exist in", getwd())texF <- sub("\\.[RSrs]nw$", ".tex", file)Sweave(file, ...)if(!file.exists(texF))stop("File", texF, "does not exist in", getwd())readLines(texF)}p0 <- paste0latexEnv <- function(lines, name) {stopifnot(is.character(lines), is.character(name),length(lines) >= 2, length(name) == 1)beg <- p0("\\begin{",name,"}")end <- p0("\\end{",name,"}")i <- grep(beg, lines, fixed=TRUE)j <- grep(end, lines, fixed=TRUE)if((n <- length(i)) != length(j))stop(sprintf("different number of %s / %s", beg,end))if(any(j-1 < i+1))stop(sprintf("positionally mismatched %s / %s", beg,end))lapply(mapply(seq, i+1,j-1, SIMPLIFY=FALSE),function(ind) lines[ind])}## now, Sweave() and check *.Rnw examples :### ------------------------------------ 1 ----------------------------------t1 <- SweaveTeX("swv-keepSrc-1.Rnw")if(FALSE)## look at itwriteLines(t1)inp <- latexEnv(t1, "Sinput")out <- latexEnv(t1, "Soutput")## This may have to be updated when the *.Rnw changes:stopifnot(length(inp) == 5,grepl("#", inp[[2]]), length(inp[[3]]) == 1,length(out) == 1,any(grepl("\\includegraphics", t1)))### ------------------------------------ 2 ----------------------------------## Sweave() comments with keep.source=TRUEt2 <- SweaveTeX("keepsource.Rnw")comml <- grep("##", t2, value=TRUE)stopifnot(length(comml) == 2,grepl("initial comment line", comml[1]),grepl("last comment", comml[2]))## the first was lost in 2.12.0; the last in most/all previous versions of R### ------------------------------------ 3 ----------------------------------## custom graphics devicesSweave("customgraphics.Rnw")### ------------------------------------ 4 ----------------------------------## SweaveOpts + \Sexpr --> \verb... outputSweave(f <- "Sexpr-verb-ex.Rnw")tools::texi2pdf(sub("Rnw$","tex", f))# used to failcat('Time elapsed: ', proc.time() - .proctime00,'\n')