Skip to content

Commit 01f23cd

Browse files
TESTS: Move to 'testme' structure
1 parent 4969ca1 commit 01f23cd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+630
-87
lines changed

.Rbuildignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Rplots.pdf$
5151
# Package specific
5252
#----------------------------
5353
^[.]BatchJobs[.]R$
54-
[.]future
54+
^[.]future
5555

5656
#----------------------------
5757
# Miscellaneous

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: future.callr
2-
Version: 0.8.2-9203
2+
Version: 0.8.2-9204
33
Depends:
44
R (>= 3.4.0),
55
future (>= 1.34.0)

R/testme.R

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## This runs 'testme' test inst/testme/test-<name>.R scripts
2+
## Don't edit - it was autogenerated by inst/testme/deploy.R
3+
testme <- function(name) {
4+
path <- system.file(package = 'future.callr', 'testme', mustWork = TRUE)
5+
Sys.setenv(R_TESTME_PATH = path)
6+
Sys.setenv(R_TESTME_PACKAGE = 'future.callr')
7+
Sys.setenv(R_TESTME_NAME = name)
8+
on.exit(Sys.unsetenv('R_TESTME_NAME'))
9+
source(file.path(path, 'run.R'))
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Undo future debug
2+
options(future.debug = FALSE)
3+
4+
## Undo future strategy
5+
future::plan(oplan)
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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
loadNamespace("future.callr")

0 commit comments

Comments
 (0)