Nothing
# - "No Attach Test" -----------------------------------------------------------
f <- paste0(tempfile(), ".R")
writeLines("1 + 1", f)
try(unitizer::unitize(f))
unlink(f)
# - "Usual Setup" --------------------------------------------------------------
source(file.path("_helper", "init.R"))
source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs")
source(file.path("_helper", "pkgs.R"))
# - "custom history file" ------------------------------------------------------
# Random history file
unitizer:::read_line_set_vals(c("1 + 1", "Y", "Y", "Y", "Y", "N"))
hist.file <- tempfile()
invisible(
unitizer:::capture_output(
unitize(FLM.TEST.FILE, interactive.mode = TRUE, history = hist.file)
) )
hist.dat <- readLines(hist.file)
unlink(hist.file)
# History only works in interactive mode
if (interactive()) {
identical(hist.dat, c("## <unitizer> (original history will be restored on exit)",
"library(utzflm, lib.loc = getOption(\"unitizer.tmp.lib.loc\"))",
"dat <- data.frame(x = 1:100, y = (1:100)^2)", "res <- fastlm(dat$x, dat$y)",
"res", "1 + 1", "get_slope(res)", "get_rsq(res)", "fastlm(1:100, 1:10)"))
} else {
identical(hist.dat, character())
}
# - "bad history" --------------------------------------------------------------
bad.hist <- try(unitize(FLM.TEST.FILE, history = list()), silent = TRUE)
inherits(bad.hist, "try-error")
conditionMessage(attr(bad.hist, "condition"))
# - "bad seed" -----------------------------------------------------------------
# gsub needed b/c of inconsistent error calls in 3.3.2 and 3.4
old.opt <- options(unitizer.seed = "bad.seed")
txtopt1 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE)))
options(unitizer.seed = list("bad.seed"))
txtopt2 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE)))
# set.seed gained an argument c.a. R3.6 that caused error mismatch
txtopt2$message[grepl("\\(function \\(seed", txtopt2$message,
ignore.case = TRUE)] <- ""
options(old.opt)
unitizer:::clean_eval_exp(txtopt1)
# supplied seed not valid int
# unexpectedly exited; not clear why all stderr is not being captured by
# capture_output...
txtopt2
# - "create dir" ---------------------------------------------------------------
# Unitizers in different directories that don't exist; also test using a
# function to generate those directories
get_store_id <- function(x) {
file <- basename(x)
dir <- dirname(dirname(x))
file.path(dir, "unitizer2", sub("(.*)\\.R", "\\1.unitizer",
file))
}
unitizer:::read_line_set_vals(c("N"))
txt1 <- unitizer:::capture_output(
untz1 <- try(unitize_dir(FLM.TEST.DIR, get_store_id, interactive.mode = TRUE))
)
unitizer:::read_line_set_vals(c("Y", "Q"))
txt2 <- unitizer:::capture_output(untz2 <- unitize_dir(FLM.TEST.DIR,
get_store_id, interactive.mode = TRUE))
inherits(untz1, "try-error")
inherits(untz2, "unitizer_results")
# Some of the text must be ablated
rem_txt <- function(x) {
crd <- grep("Create directory\\?", x)
if (!length(crd))
stop("Logic Error: this must be a create directory test")
x[-(2L:(crd[[1L]] - 1L))]
}
txt1$output <- rem_txt(txt1$output)
txt2$output <- rem_txt(txt2$output)
# must create the following directory
# cannot proceed w/o creating directories
txt1
txt2
# - print / dir ----------------------------------------------------------------
# quit from all at once
unitizer:::read_line_set_vals(c("A", "QQ", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# Now test `unitize_dir`; we are testing all different combination of whether
# a unitizer is accepted and updated
# Review all
# Accept all
# Quit
# Quit
# Re-evalute
# Review remaining
# Accept all
# Quit from review
# Quit completely
unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y",
"Q", "Q", "R", "A", "Y", "Y", "Q", "Q"))
untz3a <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
untz3a.get.all <- vapply(get_unitizer(untz3a), class, character(1L))
identical(untz3a.get.all, c("unitizer", "unitizer", "logical"))
print(untz3a)
untz3a.first <- untz3a[[1L]]
print(untz3a.first)
identical(class(untz3a), "unitizer_results")
identical(
lapply(untz3a, class),
replicate(3L, c("unitizer_result", "data.frame"), simplify = FALSE)
)
untz3a.cpy <- untz3a
# need to drop temp file attributes for tests
for (i in seq_along(untz3a.cpy)) {
attr(untz3a.cpy[[i]], "test.file") <- basename(attr(untz3a.cpy[[i]],
"test.file"))
attr(untz3a.cpy[[i]], "store.id") <- basename(attr(untz3a.cpy[[i]],
"store.id"))
}
all.equal(untz3a.cpy, rds("unitize_res1"))
# dummy class for errors
untz3a.first.bad <- untz3a.first
setClass("uhtsdfoqiuerhzb", slots=c(a='integer'))
attr(untz3a.first.bad, "store.id") <- new("uhtsdfoqiuerhzb")
print(untz3a.first.bad)
# this is a bit contrived as it isn't possible to directly create an empty
# unitize dir result
untz3a.empty <- untz3a[0]
class(untz3a.empty) <- class(untz3a)
print(untz3a.empty)
# Now accept the last remaining tests
# unlink(list.files(test.dir, pattern="\\.unitizer$", full.names=TRUE),
# recursive=TRUE)
# Invalid input
# Review third unitizer
# Accept all
# Re-eval and exit (again, not clear this is right thing to do)
unitizer:::read_line_set_vals(c("3000", "3", "Y", "Y", "Y", "Y",
"R"))
untz3b <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
print(untz3b)
identical(
vapply(get_unitizer(untz3b), class, character(1L)), rep("unitizer", 3L)
)
# - "namespace conflict" -------------------------------------------------------
# Namespace conflicts; unfortunately if either `covr` or `data.table` are
# loaded this may not work quite right. Also as of `covr` 2.2.2 it seems that
# the R session `covr` launches now seems to load the covr namespace. The
# logic here ensures covr namespace is always loaded for this tests, if
# possible. So we omit the line were what namespaces could not be unloaded are
# mentioned.
unitizer:::read_line_set_vals("Y")
ns.conf1 <- unitizer:::capture_output(
unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE)
)
ns.conf1$message <- ns.conf1$message[-3]
ns.conf1
unitizer:::read_line_set_vals("N")
ns.conf2 <- unitizer:::capture_output(
unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE)
)
ns.conf2$message <- ns.conf2$message[-3]
ns.conf2
# Non-interactive; also testing what happens when we run a test with errors
# inside a try block
try(unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = FALSE))
ns.conf3 <- unitizer:::capture_output(
try(
unitize(
file.path(FLM.TEST.DIR, "fastlm2.R"), state = "pristine",
interactive.mode = FALSE
) ) )
ns.conf3$message <- ns.conf3$message[-grep('unloaded', ns.conf3$message)]
ns.conf3
# - "Removing Tests" -----------------------------------------------------------
# Removing tests; del2 has the same tests as del1, but with some removed
extra.dir <- file.path(FLM.TEST.DIR, "..", "extra")
unitize(file.path(extra.dir, "del1.R"), auto.accept = "new", interactive.mode = FALSE)
unitizer:::read_line_set_vals(c("Y", "YY", "Y", "Y"))
unitize(
file.path(extra.dir, "del2.R"),
store.id = file.path(extra.dir, "del1.unitizer"),
interactive.mode = TRUE
)
# - "navigate" -----------------------------------------------------------------
# Update `fastlm` to cause unitizers to fail, and go through the errors
update_fastlm(FLM, version = "0.1.1")
inst_pak(FLM)
# Try navigating through the unitizer
unitizer:::read_line_set_vals(c("P", "B", "3", "N", "U", "N",
"N", "B", "U", "Q"))
untz7a <- unitize(FLM.TEST.FILE, interactive.mode = TRUE)
attr(untz7a, "test.file") <- basename(attr(untz7a, "test.file"))
attr(untz7a, "store.id") <- basename(attr(untz7a, "store.id"))
path <- attr(untz7a, "test.file")
path
(path.norm <- unitizer:::normalize_path(path, mustWork=FALSE, exists=TRUE))
(rel.path <- unitizer:::relativize_path(path.norm, wd=NULL, only.if.shorter=TRUE, exists=TRUE))
(pkg.dir <- unitizer:::get_package_dir(path.norm, exists=TRUE))
untz7a
# - "review dir" ---------------------------------------------------------------
# list help, review first item, but do nothing
unitizer:::read_line_set_vals(c("H", "1", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# incorrect selection
unitizer:::read_line_set_vals(c("H", "4", "1", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# simulate slow unitizer review
old.opt <- options(unitizer.prompt.b4.quit.time = 0)
unitizer:::read_line_set_vals(c("H", "1", "Q", "Q", "Q", "Y"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
options(old.opt)
# Failures in non-interactive mode (note, can't run on the actual "fastlm.R"
# file b/c we need to do this under a `try`):
try(
unitize_dir(FLM.TEST.DIR, pattern = "unitize|fastlm2", interactive.mode = FALSE)
)
# review all that need review, but don't do anything
unitizer:::read_line_set_vals(c("A", "Q", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# review all, but don't do anything
unitizer:::read_line_set_vals(c("AA", "Q", "Q", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# review one, and Re-eval despite no change
unitizer:::read_line_set_vals(c("1", "R", "Y", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
unitizer:::read_line_set_vals(c("1", "RR", "Y", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# Test force eval
# first run, force update and accept
# second run, R from dir summary doesn't set bookmarks
unitizer:::read_line_set_vals(c("1", "O", "Q", "Y", "R", "1",
"Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# Variations on YY, YYY, and YYY
unitizer:::read_line_set_vals(c("1", "YY", "Y", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
unitizer:::read_line_set_vals(c("1", "YYY", "Y", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
unitizer:::read_line_set_vals(c("1", "YYYY", "Y", "Q", "Q"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# review all, accepting all changes, and reevaluting everything; note that this
# means we're accepting tests that are not correct
unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y", "Y", "RR"))
unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)
# - "multi-sect" ---------------------------------------------------------------
# Upgrade again, and try with deleted tests and other things
update_fastlm(FLM, version = "0.1.2")
inst_pak(FLM)
unitizer:::read_line_set_vals(c("3", "ref(res)", "Y", "Y", "B",
"1", "B", "U", "Y", "RR", "Y", "Q"))
txt20 <- unitizer:::capture_output(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE))
txt20$output <- gsub("^<\\w+: .*?>", "", txt20$output)
txt20
# - "Load Fail" ----------------------------------------------------------------
# Purposefully mess up one of the unitizers to see if the load fail stuff works
saveRDS(list(1, 2, 3), file.path(FLM.TEST.DIR, "fastlm1.unitizer",
"data.rds"))
try(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE))
unitizer:::read_line_set_vals(NULL)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.