mirror of
https://github.com/msberends/AMR.git
synced 2026-11-16 00:10:57 +01:00
Package: - stop_() called cli::ansi_has_hyperlink_support() before checking that cli is available, so without cli every error became "there is no package called 'cli'" - interpretive_rules() failed on R 3.0 for guidelines without AmpC rules (assignment to zero rows) - Guard the ggplot2 example of wisca_plot() CI: - check-old: R 3.0 could not install tinytest over HTTPS, so no unit tests ran; install it with curl, and fail when tinytest is missing or any test fails - tinytest shim: record expectations in the test file environment, support skips and errors per test_that() block, add missing testthat equivalents, source helper files - Add R 4.0 (oldrel-6) to check-old, and oldrel-5 to check-recent
115 lines
5.4 KiB
Plaintext
115 lines
5.4 KiB
Plaintext
# ==================================================================== #
|
|
# 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")
|
|
}
|
|
}
|
|
}
|