Skip to content

Commit 1cb9123

Browse files
TESTS: Use 'testme' for unit tests
1 parent 67cc631 commit 1cb9123

File tree

91 files changed

+694
-1948
lines changed

Some content is hidden

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

91 files changed

+694
-1948
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: doFuture
2-
Version: 1.0.2-9002
2+
Version: 1.0.2-9003
33
Title: Use Foreach to Parallelize via the Future Framework
44
Depends:
55
foreach (>= 1.5.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 = 'doFuture', 'testme', mustWork = TRUE)
5+
Sys.setenv(R_TESTME_PATH = path)
6+
Sys.setenv(R_TESTME_PACKAGE = 'doFuture')
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: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
testme <- as.environment("testme")
2+
hpaste <- future:::hpaste
3+
4+
## Undo options
5+
## (a) Reset
6+
options(oopts0)
7+
8+
## (b) Remove added
9+
local({
10+
added <- setdiff(names(options()), names(oopts0))
11+
opts <- vector("list", length = length(added))
12+
names(opts) <- added
13+
options(opts)
14+
})
15+
16+
## (c) Assert that everything was undone
17+
if (!identical(options(), oopts0)) {
18+
message("Failed to undo options:")
19+
oopts <- options()
20+
message(sprintf(" - Expected options: [n=%d] %s",
21+
length(oopts0), hpaste(sQuote(names(oopts0)))))
22+
extra <- setdiff(names(oopts), names(oopts0))
23+
message(paste(sprintf(" - Options still there: [n=%d]", length(extra)),
24+
hpaste(sQuote(extra))))
25+
missing <- setdiff(names(oopts0), names(oopts))
26+
message(paste(sprintf(" - Options missing: [n=%d]", length(missing)),
27+
hpaste(sQuote(missing))))
28+
29+
message("Differences option by option:")
30+
void <- lapply(names(oopts0), FUN = function(name) {
31+
value0 <- oopts0[[name]]
32+
value <- oopts[[name]]
33+
if (!identical(value, value0)) {
34+
if (testme[["debug"]]) {
35+
utils::str(list(name = name, expected = value0, actual = value))
36+
}
37+
}
38+
})
39+
}
40+
41+
42+
## Undo system environment variables
43+
## (a) Reset
44+
do.call(Sys.setenv, args=as.list(oenvs0))
45+
## (b) Removed added
46+
added <- setdiff(names(Sys.getenv()), names(oenvs0))
47+
Sys.unsetenv(added)
48+
## (c) Assert that everything was undone
49+
if (!identical(Sys.getenv(), oenvs0)) {
50+
message("Failed to undo environment variables:")
51+
oenvs <- Sys.getenv()
52+
message(sprintf(" - Expected environment variables: [n=%d] %s",
53+
length(oenvs0), hpaste(sQuote(names(oenvs0)))))
54+
extra <- setdiff(names(oenvs), names(oenvs0))
55+
message(paste(sprintf(" - Environment variables still there: [n=%d]", length(extra)),
56+
hpaste(sQuote(extra))))
57+
missing <- setdiff(names(oenvs0), names(oenvs))
58+
message(paste(sprintf(" - Environment variables missing: [n=%d]", length(missing)),
59+
hpaste(sQuote(missing))))
60+
message("Differences environment variable by environment variable:")
61+
void <- lapply(names(oenvs0), FUN = function(name) {
62+
value0 <- unname(oenvs0[name])
63+
value <- unname(oenvs[name])
64+
if (!identical(value, value0)) {
65+
if (testme[["debug"]]) {
66+
utils::str(list(name = name, expected = value0, actual = value))
67+
}
68+
}
69+
})
70+
}
71+
72+
73+
## Assert undo was successful
74+
if (testme[["debug"]]) {
75+
stopifnot(identical(options(), oopts0))
76+
}
77+
78+
## Undo variables
79+
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: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## Look for detritus files
2+
testme <- as.environment("testme")
3+
local({
4+
delta <- diff_connections(get_connections(), testme[["testme_connections"]])
5+
if (any(lengths(delta) > 0)) {
6+
message(sprintf("Detritus connections generated by test %s:", sQuote(testme[["name"]])))
7+
print(delta)
8+
}
9+
})
10+
11+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Look for detritus files
2+
testme <- as.environment("testme")
3+
4+
local({
5+
path <- dirname(tempdir())
6+
7+
if (basename(path) == "working_dir") {
8+
files <- dir(pattern = "^Rscript", path = path, all.files = TRUE, full.names = TRUE)
9+
if (length(files) > 0L) {
10+
message(sprintf("Detritus 'Rscript*' files generated by test %s:", sQuote(testme[["name"]])))
11+
print(files)
12+
13+
## Remove detritus files produced by this test script, so that
14+
## other test scripts will not fail because of these files.
15+
unlink(files)
16+
17+
## Signal the problem
18+
msg <- sprintf("Detected 'Rscript*' files: [n=%d] %s", length(files), paste(sQuote(basename(files)), collapse = ", "))
19+
## Are detritus files files expected by design on MS Windows?
20+
## If so, produce a warning, otherwise an error
21+
if ("detritus-files" %in% testme[["tags"]] &&
22+
.Platform[["OS.type"]] == "windows") {
23+
warning(msg, immediate. = TRUE)
24+
} else {
25+
stop(msg)
26+
}
27+
}
28+
} else {
29+
message(sprintf("Skipping, because path appears not to be an 'R CMD check' folder: %s", sQuote(path)))
30+
}
31+
})

inst/testme/_prologue/001.load.R

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
testme <- as.environment("testme")
2+
loadNamespace(testme[["package"]])
3+
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()

0 commit comments

Comments
 (0)