Skip to content

Commit 4484556

Browse files
TESTME: prepare
1 parent 1d7feec commit 4484556

File tree

13 files changed

+650
-0
lines changed

13 files changed

+650
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
testme <- as.environment("testme")
2+
3+
## Undo options
4+
## (a) Reset
5+
options(oopts0)
6+
7+
## (b) Remove added
8+
local({
9+
added <- setdiff(names(options()), names(oopts0))
10+
opts <- vector("list", length = length(added))
11+
names(opts) <- added
12+
options(opts)
13+
})
14+
15+
## (c) Assert that everything was undone
16+
if (!identical(options(), oopts0)) {
17+
message("Failed to undo options:")
18+
oopts <- options()
19+
message(sprintf(" - Expected options: [n=%d] %s",
20+
length(oopts0), hpaste(sQuote(names(oopts0)))))
21+
extra <- setdiff(names(oopts), names(oopts0))
22+
message(paste(sprintf(" - Options still there: [n=%d]", length(extra)),
23+
hpaste(sQuote(extra))))
24+
missing <- setdiff(names(oopts0), names(oopts))
25+
message(paste(sprintf(" - Options missing: [n=%d]", length(missing)),
26+
hpaste(sQuote(missing))))
27+
message("Differences option by option:")
28+
for (name in names(oopts0)) {
29+
value0 <- oopts0[[name]]
30+
value <- oopts[[name]]
31+
if (!identical(value, value0)) {
32+
if (testme[["debug"]]) {
33+
utils::str(list(name = name, expected = value0, actual = value))
34+
}
35+
}
36+
}
37+
}
38+
39+
40+
## Undo system environment variables
41+
## (a) Reset
42+
do.call(Sys.setenv, args=as.list(oenvs0))
43+
## (b) Removed added
44+
added <- setdiff(names(Sys.getenv()), names(oenvs0))
45+
Sys.unsetenv(added)
46+
## (c) Assert that everything was undone
47+
if (!identical(Sys.getenv(), oenvs0)) {
48+
message("Failed to undo environment variables:")
49+
oenvs <- Sys.getenv()
50+
message(sprintf(" - Expected environment variables: [n=%d] %s",
51+
length(oenvs0), hpaste(sQuote(names(oenvs0)))))
52+
extra <- setdiff(names(oenvs), names(oenvs0))
53+
message(paste(sprintf(" - Environment variables still there: [n=%d]", length(extra)),
54+
hpaste(sQuote(extra))))
55+
missing <- setdiff(names(oenvs0), names(oenvs))
56+
message(paste(sprintf(" - Environment variables missing: [n=%d]", length(missing)),
57+
hpaste(sQuote(missing))))
58+
message("Differences environment variable by environment variable:")
59+
for (name in names(oenvs0)) {
60+
value0 <- unname(oenvs0[name])
61+
value <- unname(oenvs[name])
62+
if (!identical(value, value0)) {
63+
if (testme[["debug"]]) {
64+
utils::str(list(name = name, expected = value0, actual = value))
65+
}
66+
}
67+
}
68+
}
69+
70+
71+
## Assert undo was successful
72+
if (testme[["debug"]]) {
73+
stopifnot(identical(options(), oopts0))
74+
}
75+
76+
## Undo variables
77+
rm(list = c(setdiff(ls(envir = globalenv()), ovars)), envir = globalenv())

inst/testme/_epilogue/090.gc.R

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Travis CI specific: Explicit garbage collection because it
2+
## looks like Travis CI might run out of memory during 'covr'
3+
## testing and we now have so many tests. /HB 2017-01-11
4+
if ("covr" %in% loadedNamespaces()) {
5+
res <- gc()
6+
testme <- as.environment("testme")
7+
if (testme[["debug"]]) print(res)
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
testme <- as.environment("testme")
2+
if (testme[["debug"]]) {
3+
info <- utils::sessionInfo()
4+
message("Session information:")
5+
print(info)
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Look for detritus files
2+
testme <- as.environment("testme")
3+
delta <- diff_connections(get_connections(), testme[["testme_connections"]])
4+
if (any(lengths(delta) > 0)) {
5+
message(sprintf("Detritus connections generated by test %s:", sQuote(testme[["name"]])))
6+
print(delta)
7+
}
8+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
## Look for detritus files
2+
testme <- as.environment("testme")
3+
path <- dirname(tempdir())
4+
5+
if (basename(path) == "working_dir") {
6+
files <- dir(pattern = "^Rscript", path = path, all.files = TRUE, full.names = TRUE)
7+
if (length(files) > 0L) {
8+
message(sprintf("Detritus 'Rscript*' files generated by test %s:", sQuote(testme[["name"]])))
9+
print(files)
10+
11+
## Remove detritus files produced by this test script, so that
12+
## other test scripts will not fail because of these files.
13+
unlink(files)
14+
15+
## Signal the problem
16+
msg <- sprintf("Detected 'Rscript*' files: [n=%d] %s", length(files), paste(sQuote(basename(files)), collapse = ", "))
17+
## Are detritus files files expected by design on MS Windows?
18+
## If so, produce a warning, otherwise an error
19+
if ("detritus-files" %in% testme[["tags"]] &&
20+
.Platform[["OS.type"]] == "windows") {
21+
warning(msg, immediate. = TRUE)
22+
} else {
23+
stop(msg)
24+
}
25+
}
26+
} else {
27+
message(sprintf("Skipping, because path appears not to be an 'R CMD check' folder: %s", sQuote(path)))
28+
}

inst/testme/_prologue/001.load.R

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
testme <- as.environment("testme")
2+
loadNamespace(testme[["package"]])
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## Record original state
2+
ovars <- ls(envir = globalenv())
3+
oenvs <- oenvs0 <- Sys.getenv()
4+
oopts0 <- options()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## Private package functions
2+
printf <- function(...) cat(sprintf(...))
3+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
check_full <- (Sys.getenv("_R_CHECK_FULL_") != "")
2+
3+
covr <- ("covr" %in% loadedNamespaces())
4+
on_macos <- grepl("^darwin", R.version$os)
5+
on_githubactions <- as.logical(Sys.getenv("GITHUB_ACTIONS", "FALSE"))
6+
7+
# WORKAROUND: Make sure tests also work with 'covr' package
8+
if (covr) {
9+
globalenv <- function() parent.frame()
10+
baseenv <- function() environment(base::sample)
11+
}
12+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
## Settings

0 commit comments

Comments
 (0)