diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/runUnitTests.R | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/runUnitTests.R b/tests/runUnitTests.R new file mode 100644 index 0000000..2d56d89 --- /dev/null +++ b/tests/runUnitTests.R @@ -0,0 +1,50 @@ +pkgname <- "guix.install" +subdir <- "unitTests" +path <- getwd() + +.failure_details <- function(result) { + res <- result[[1L]] + if (res$nFail > 0 || res$nErr > 0) { + Filter(function(x) length(x) > 0, lapply(res$sourceFileResults, + function(fileRes) { + names(Filter(function(x) x$kind != "success", + fileRes)) + })) + } + else list() +} + +root <- system.file(package = pkgname) +library(pkgname, character.only = TRUE, quietly = TRUE) +dir <- file.path(root, subdir) +if (!file.exists(dir)) { + dir <- file.path(root, "inst", subdir) +} +if (!file.exists(dir)) { + stop("unable to find unit tests, no subdir ", sQuote(subdir)) +} + +library("RUnit", quietly = TRUE) +RUnit_opts <- getOption("RUnit", list()) +RUnit_opts$verbose <- 0L +RUnit_opts$silent <- TRUE +RUnit_opts$verbose_fail_msg <- TRUE +oopt <- options(RUnit = RUnit_opts) +on.exit(options(oopt)) +suite <- RUnit::defineTestSuite(name = paste(pkgname, "RUnit Tests"), + dirs = dir, testFileRegexp = "^test_.*\\.R$", rngKind = "default", + rngNormalKind = "default") +result <- RUnit::runTestSuite(suite) +cat("\n\n") +RUnit::printTextProtocol(result, showDetails = FALSE) +if (length(details <- .failure_details(result)) > 0) { + cat("\nTest files with failing tests\n") + for (i in seq_along(details)) { + cat("\n ", basename(names(details)[[i]]), "\n") + for (j in seq_along(details[[i]])) { + cat(" ", details[[i]][[j]], "\n") + } + } + cat("\n\n") + stop("unit tests failed for package ", pkgname) +} |