diff --git a/R/module_teal_lockfile.R b/R/module_teal_lockfile.R index 8ff8b087d5..43c9816dd1 100644 --- a/R/module_teal_lockfile.R +++ b/R/module_teal_lockfile.R @@ -74,7 +74,7 @@ srv_teal_lockfile <- function(id) { }) lockfile_path <- "teal_app.lock" - is_lockfile_enabled <- isTRUE(getOption("teal.lockfile.enable")) + is_lockfile_enabled <- .is_lockfile_enabled() user_lockfile_path <- getOption("teal.lockfile.path", default = "") is_user_lockfile_set <- !identical(user_lockfile_path, "") @@ -194,3 +194,19 @@ utils::globalVariables(c("opts", "sysenv", "libpaths", "wd", "lockfilepath", "ru .is_lockfile_deps_installed <- function() { requireNamespace("mirai", quietly = TRUE) && requireNamespace("renv", quietly = TRUE) } + +#' @rdname module_teal_lockfile +.is_lockfile_enabled <- function() { + if (isTRUE(getOption("teal.lockfile.enable"))) { + return(TRUE) + } else { + !( + identical(Sys.getenv("CALLR_IS_RUNNING"), "true") || # inside callr process + identical(Sys.getenv("TESTTHAT"), "true") || # inside devtools::test + !identical(Sys.getenv("QUARTO_PROJECT_ROOT"), "") || # inside Quarto process + ( + ("CheckExEnv" %in% search()) || any(c("_R_CHECK_TIMINGS_", "_R_CHECK_LICENSE_") %in% names(Sys.getenv())) + ) # inside R CMD CHECK + ) + } +} diff --git a/R/zzz.R b/R/zzz.R index 9b324ff5ff..fcab860a8a 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -1,8 +1,8 @@ .onLoad <- function(libname, pkgname) { # adapted from https://github.com/r-lib/devtools/blob/master/R/zzz.R + teal_default_options <- list( teal.show_js_log = FALSE, - teal.lockfile.enable = TRUE, shiny.sanitize.errors = FALSE ) diff --git a/tests/testthat/setup-options.R b/tests/testthat/setup-options.R index e923a60c7f..40d3949a8c 100644 --- a/tests/testthat/setup-options.R +++ b/tests/testthat/setup-options.R @@ -1,9 +1,3 @@ -withr::local_options( - # we should't run lockfile process multiple times in tests as it starts background process which is not - # possible to kill once run. It means that background R sessions are being cumulated - list(teal.lockfile.enable = FALSE), - .local_envir = testthat::teardown_env() -) # `opts_partial_match_old` is left for exclusions due to partial matching in dependent packages (i.e. not fixable here) # it might happen that it is not used right now, but it is left for possible future use