# ==================================================================== # # TITLE: # # AMR: An R Package for Working with Antimicrobial Resistance Data # # # # SOURCE CODE: # # https://github.com/msberends/AMR # # # # PLEASE CITE THIS SOFTWARE AS: # # Berends MS, Luz CF, Friedrich AW, et al. (2022). # # AMR: An R Package for Working with Antimicrobial Resistance Data. # # Journal of Statistical Software, 104(3), 1-31. # # https://doi.org/10.18637/jss.v104.i03 # # # # Developed at the University of Groningen and the University Medical # # Center Groningen in the Netherlands, in collaboration with many # # colleagues from around the world, see our website. # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # # GNU General Public License version 2.0 (GNU GPL-2), as published by # # the Free Software Foundation. # # We created this package for both routine data analysis and academic # # research and it was publicly released in the hope that it will be # # useful, but it comes WITHOUT ANY WARRANTY OR LIABILITY. # # # # Visit our website for the full manual and a complete tutorial about # # how to conduct AMR data analysis: https://amr-for-r.org # # ==================================================================== # # we use {tinytest} for older R versions to allow unit testing in R >= 3.0.0. # test only on GitHub Actions - not on CRAN as tests are lengthy if (identical(Sys.getenv("R_RUN_TINYTEST"), "true")) { # env var 'R_LIBS_USER' gets overwritten during 'R CMD check' in GitHub Actions, so: .libPaths(c(Sys.getenv("R_LIBS_USER_GH_ACTIONS"), .libPaths())) if (!AMR:::pkg_is_available("tinytest", also_load = TRUE)) { stop("R_RUN_TINYTEST is 'true', but the tinytest package could not be loaded, so no unit tests were run") } else { # load the package library(AMR) # testthat equivalents; tinytest only records expectations that are called from the environment # of a test file, so these call the expectations found there (via `env`) instead of tinytest:: test_that <- function(desc, code) { env <- parent.frame() tryCatch(code, skip_test = function(s) invisible(NULL), error = function(e) get("expect_true", envir = env)(FALSE, info = paste0("Error in '", desc, "': ", conditionMessage(e))) ) } skip_if <- function(condition, message = "") { if (isTRUE(condition)) stop(structure(class = c("skip_test", "condition"), list(message = message, call = NULL))) } skip_on_cran <- function() invisible(NULL) expect_output <- function(...) get("expect_stdout", envir = parent.frame())(...) expect_named <- function(object, expected, ...) get("expect_identical", envir = parent.frame())(names(object), expected, ...) expect_setequal <- function(object, expected, ...) get("expect_true", envir = parent.frame())(setequal(object, expected), ...) expect_lte <- function(object, expected, ...) get("expect_true", envir = parent.frame())(isTRUE(all(object <= expected)), ...) # set language set_AMR_locale("English") # set some functions for older R versions if (getRversion() < "3.2.0") { anyNA <- AMR:::anyNA dir.exists <- AMR:::dir.exists file.size <- AMR:::file.size file.mtime <- AMR:::file.mtime isNamespaceLoaded <- AMR:::isNamespaceLoaded lengths <- AMR:::lengths } if (getRversion() < "3.3.0") { strrep <- AMR:::strrep } if (getRversion() < "3.5.0") { isFALSE <- AMR:::isFALSE } if (getRversion() < "3.6.0") { str2lang <- AMR:::str2lang # trims() was introduced in 3.3.0, but its argument `whitespace` only in 3.6.0 trimws <- AMR:::trimws } if (getRversion() < "4.0.0") { deparse1 <- AMR:::deparse1 } if (getRversion() < "4.4.0") { `%||%` <- AMR:::`%||%` } testdir <- ifelse(dir.exists("inst/testthat"), "inst/testthat", "testthat") # helper files are sourced by testthat, but not by tinytest; helper-functions.R only contains expect_inherits(), which tinytest has itself helpers <- list.files(system.file(testdir, package = "AMR"), pattern = "^helper.*[.]R$", full.names = TRUE) for (helper in helpers[basename(helpers) != "helper-functions.R"]) { source(helper) } suppressMessages( out <- test_package("AMR", testdir = testdir, verbose = FALSE, color = FALSE ) ) cat("\n\nSUMMARY:\n") print(summary(out)) if (!all_pass(out)) { cat("\n\nFAILURES:\n") print(out, passes = FALSE, limit = 100) stop("Unit tests failed, see above") } } }