inst/testme/test-options-and-envvars.R

library(parallelly)

getOption2 <- parallelly:::getOption2
getEnvVar2 <- parallelly:::getEnvVar2

options(parallelly.some.option = NULL)
options(parallelly.some.option = NULL)
Sys.unsetenv("R_FUTURE_SOME_ENVVAR")
Sys.unsetenv("R_PARALLELLY_SOME_ENVVAR")


message("*** Options and environment variables ...")

showall <- function() {
  utils::str(list(
    future.some.setting       = getOption("future.some.setting", NULL),
    parallelly.some.setting   = getOption("parallelly.some.setting", NULL),
    R_FUTURE_SOME_SETTING     = Sys.getenv("R_FUTURE_SOME_SETTING", ""),
    R_PARALLELLY_SOME_SETTING = Sys.getenv("R_PARALLELLY_SOME_SETTING", "")
  ))
}

for (what in c("option", "envvar")) {
  if (what == "option") {
    setvalue <- function(name, value) {
      name <- sprintf("%s.some.setting", tolower(name))
      if (is.null(value)) {
        args <- list(NULL)
      } else {
        args <- as.list(value)
      }
      names(args) <- name
      do.call(options, args = args)
      class(args) <- "option"
      args
    }
  } else if (what == "envvar") {
    setvalue <- function(name, value) {
      name <- sprintf("R_%s_SOME_SETTING", toupper(name))
      if (is.null(value)) {
        Sys.unsetenv(name)
        args <- list(NULL)
        names(args) <- name
      } else {
        args <- as.list(value)
        names(args) <- name
        do.call(Sys.setenv, args = args)
      }
      class(args) <- "envvar"
      args
    }
  }
  
  for (name in c("future", "parallelly")) {
    for (value0 in list(NULL, TRUE)) {
      args <- setvalue(name, value0)
      stopifnot(inherits(args, what))
      showall()
      
      if (is.null(value0)) {
        message("- getOption2()")
        value <- getOption2("future.some.setting", NA)
        stopifnot(is.na(value))
        value <- getOption2("parallelly.some.setting", NA)
        stopifnot(is.na(value))
        
        message("- getEnvVar2()")
        value <- getEnvVar2("R_FUTURE_SOME_ENVVAR", NA)
        stopifnot(is.na(value))
        value <- getEnvVar2("R_PARALLELLY_SOME_ENVVAR", NA)
        stopifnot(is.na(value))
      } else if (isTRUE(value0)) {
        if (what == "option") {
          message("- getOption2()")
          value1 <- getOption2("future.some.setting", NA)
          stopifnot(isTRUE(value1))
          value2 <- getOption2("parallelly.some.setting", NA)
          stopifnot(isTRUE(value2))
        } else if (what == "envvar") {
          message("- getEnvVar2()")
          value1 <- getEnvVar2("R_FUTURE_SOME_SETTING", NA)
          stopifnot(value1 == "TRUE")
          value2 <- getEnvVar2("R_PARALLELLY_SOME_SETTING", NA)
          stopifnot(value2 == "TRUE")
        }
        stopifnot(identical(value1, value2))
      }

      args <- setvalue(name, NULL)
      stopifnot(inherits(args, what), is.null(args[[1]]))
    } ## for (value ...)
  } ## for (name ...)
} ## for (what ...)


message("*** Options and environment variables ... DONE")

Try the parallelly package in your browser

Any scripts or data that you put into this service are public.

parallelly documentation built on April 4, 2025, 4:38 a.m.