Nothing
test_that("test 4", {
setupInitial <- setupTest()
# on.exit(endTest(setupInitial))
isDev <- getOption("Require.isDev")
# Test misspelled
warns <- capture_warnings(
err <- try(silent = TRUE,
out <- capture.output(type = "message",
lala <- Require("data.tt")
)
)
)
test <- testWarnsInUsePleaseChange(warns)
if (!getOption("Require.usePak", TRUE))
testthat::expect_true(any(grepl("could not be installed", warns))) # {out, "simpleWarning")})
# for coverages that were missing
pkgDTEmpty <- Require:::toPkgDT(character())
out <- Require:::installedVers(pkgDTEmpty) #
pkgDep("data.table", purge = FALSE)
if (!isDev) {
pkgDep("data.table", purge = TRUE)
}
skip_if_offline()
if (isTRUE(tryCatch(packageVersion("fpCompare"), error = function(e) "0.0.0") < "0.2.5")) {
if (isDev) {
mess <- capture_messages(
warns <- capture_warnings(
Require::Install(c("fpCompare (>= 0.2.4)", "PredictiveEcology/fpCompare@development (>= 0.2.4.9000)"),
install= "force", libPaths = .libPaths()[1])
)
)
# mac has a transient, unidentified failure on GHA with this
if (isMacOSX() && length(dir(.libPaths()[1], pattern = "fpCompare")) > 0)
if (!isTRUE(any(grepl("Internet.+unavailable", mess))))
expect_true(packVer("fpCompare", lib.loc = .libPaths()[1]) > "0.2.4")
}
}
skip_if_offline()
if (!getOption("Require.usePak", TRUE)) {
pkgDepTopoSort(c("data.table"), useAllInSearch = TRUE)
pkgDepTopoSort(c("data.table"), useAllInSearch = TRUE, deps = "Require")
pkgDepTopoSort(c("Require", "data.table"))
pkgDepTopoSort(c("Require", "data.table"),
useAllInSearch = TRUE,
deps = "Require", returnFull = FALSE, reverse = TRUE
)
}
if (Sys.info()["user"] == "emcintir") {
options(
"Require.cachePkgDir" = TRUE,
"Require.unloadNamespaces" = FALSE
)
}
Require("data.table",
install = "force", require = FALSE, libPaths = tempdir2("other"),
quiet = !(getOption("Require.verbose") >= 1)
)
suppressWarnings(Require("Require",
install = "force", require = FALSE,
libPaths = tempdir2("other")
))
pkg <- c("data.table", "data.table")
pkgDT <- Require:::toPkgDT(pkg)
data.table::set(pkgDT, NULL, "installFrom", "CRAN")
data.table::set(pkgDT, NULL, "installed", FALSE)
data.table::set(pkgDT, NULL, "installResult", TRUE)
data.table::set(pkgDT, NULL, "versionSpec", NA)
if (!getOption("Require.usePak", TRUE)) {
out <- detachAll("data.table",
dontTry = dontDetach())
testthat::expect_true({
isTRUE(out["data.table"] == 1)
})
}
warn <- tryCatch(Require:::warningCantInstall("devtools"), warning = function(w) w$message)
testthat::expect_true({
grepl("you will likely", warn)
})
origLP <- setLibPaths(tempdir2("other"), updateRprofile = FALSE)
warn <- tryCatch(Require("data.table", require = FALSE), warning = function(w) w$message)
silent <- setLibPaths(origLP, updateRprofile = FALSE)
# Test the setLibPaths with changed .Rprofile
origDir <- setwd(tempdir2("other"))
setLibPaths("newProjectLib", updateRprofile = TRUE) # set a new R package library locally
setLibPaths() # reset it to original
setwd(origDir)
## setup
# setupTestDir <- normPath(tempdir2("setupTests"))
# ccc <- checkPath(file.path(setupTestDir, ".cache"), create = TRUE)
# out2222 <- capture.output(setup(setupTestDir, RPackageCache = ccc))
# testthat::expect_true(identical(getOption("Require.cachePkgDir"), ccc)) ## TODO: warnings in readLines() cannot open DESCRIPTION file
# out2222 <- capture.output(setupOff())
# Require:::messageVerbose("This is getOption('Require.cachePkgDir'): ", Require:::cacheGetOptionCachePkgDir(),
# verboseLevel = 0)
# RPackageCacheSysEnv <- Sys.getenv("R_REQUIRE_PKG_CACHE")
# if (identical(RPackageCacheSysEnv, "FALSE") ) {
# testthat::expect_true(identical(NULL, cacheGetOptionCachePkgDir()))
# } else {
# if (!(is.null(Require:::cacheGetOptionCachePkgDir()) || Require:::cacheGetOptionCachePkgDir() == "FALSE"))
# testthat::expect_true(identical(normPath(Require:::cacheGetOptionCachePkgDir()), normPath(Require::cachePkgDir())))
# }
# reset options after setupOff()
# secondTry <- normPath(file.path(setupTestDir, ".cacheSecond"))
# opt22 <- options("Require.cachePkgDir" = secondTry)
# ccc <- checkPath(secondTry, create = TRUE)
# out2222 <- capture.output(setup(setupTestDir, RPackageCache = ccc)) ## TODO: warnings in file() cannot open DESCRIPTION files
# testthat::expect_true(identical(Require:::cacheGetOptionCachePkgDir(), ccc))
# out2222 <- capture.output(setupOff())
# testthat::expect_true(identical(Require:::cacheGetOptionCachePkgDir(), secondTry)) # BECAUSE THIS IS A MANUAL OVERRIDE of options; doesn't return Sys.getenv
ooo <- options(Require.cachePkgDir = TRUE)
testthat::expect_true(identical(cacheGetOptionCachePkgDir(), cachePkgDir()))
ooo <- options(Require.cachePkgDir = FALSE)
testthat::expect_true(identical(cacheGetOptionCachePkgDir(), NULL))
ooo <- options(Require.cachePkgDir = tempdir())
testthat::expect_true(identical(cacheGetOptionCachePkgDir(), tempdir()))
ooo <- options(Require.cachePkgDir = "default")
RPackageCacheSysEnv <- Sys.getenv("R_REQUIRE_PKG_CACHE")
if (identical(RPackageCacheSysEnv, "FALSE")) {
testthat::expect_true(identical(NULL, cacheGetOptionCachePkgDir()))
} else {
if (!(is.null(Require:::cacheGetOptionCachePkgDir()) || Require:::cacheGetOptionCachePkgDir() == "FALSE")) {
testthat::expect_true(identical(normPath(Require:::cacheGetOptionCachePkgDir()), normPath(Require::cachePkgDir())))
}
}
ro <- RequireOptions()
gro <- getRequireOptions()
testthat::expect_true(is.list(ro))
testthat::expect_true(all(startsWith(names(ro), "Require")))
testthat::expect_true(is.list(gro))
testthat::expect_true(all(startsWith(names(gro), "Require")))
# Ensure the "which" for pkgDep are working correctly
wh <- expand.grid(suggests = c(TRUE, FALSE), depends = c(TRUE, FALSE), imports = c(TRUE, FALSE), linkingTo = c(TRUE, FALSE))
utilsOut <- list()
for (i in c("Suggests", "Imports", "Depends", "LinkingTo")) {
lala <- strsplit(gsub("\n", "", utils::packageDescription("Require", fields = i)), ",")[[1]]
utilsOut[[i]] <- gsub(x = lala, " ", "") # remove spaces
}
if (getRversion() >= "4.3.0") { # R 4.2.X and lower don't exist on PEuniverse so this test fails
opts <- options(repos = PEUniverseRepo()); on.exit(options(opts), add = TRUE)
out2 <- by(wh, seq(NROW(wh)), function(wh1Row) {
out <- do.call(pkgDep, append(list("Require"), as.list(wh1Row[1, , drop = TRUE])))[[1]]
o2 <- tools::toTitleCase(names(wh1Row)[unlist(wh1Row)])
if (length(o2)) {
pkgs <- gsub(x = unname(unlist(utilsOut[o2])), " ", "") # remove spaces
out <- gsub(x = out, " ", "") # remove spaces
# out <- setdiff(out, grep("R\\(.+", pkgs, value = TRUE, invert = TRUE))
}
setdiff(out, "remotes") # remotes was removed in version 0.2.6.9020
})
localDeps <- DESCRIPTIONFileDeps(system.file("DESCRIPTION", package = "Require"),
which = c("Suggests", "Imports", "Depends"))
locals <- setdiff(extractPkgName(localDeps), .basePkgs)
testArgs <- setdiff(locals, unique(extractPkgName(unname(unlist(as.list(out2))))))
# not sure why roxygen2 was not in it before; fpCompare is new, not yet on PEUniverse
testArgs <- setdiff(testArgs, c("roxygen2", "rmarkdown", "fpCompare"))
testthat::expect_identical(testArgs, character())
}
if (isDev) {
# this was a bug created a warning when there was a package not on CRAN, but there
# were multiple repos; ffbase is no longer on CRAN
# can't quiet this down on linux because ffbase is not binary but rest are ...
# install.packages won't do both types quiet = TRUE for some reason
if (!isMacOSX()) {
warns1 <- capture_warnings(
Install("ff", # verbose = 0,
repos = c(RSPM = urlForPositPACKAGES, CRAN = "https://cloud.r-project.org"
))
)
expect_identical(character(), warns1)
}
}
if (isWindows()) {
# test the new approach that installs outside R session -- is fine on Linux-alikes
withr::local_options(Require.installPackagesSys = FALSE)
ver <- "0.2.4"; ineq <- "<"
Install(paste0("fpCompare (", ineq, ver, ")"), install = "force")
ip <- installed.packages(noCache = TRUE) |> as.data.table()
expect_true(compareVersion2(ip[Package %in% "fpCompare"]$Version, ver, inequality = ineq))
#packageVersion("fpCompare") # doesn't update immediately
ineq <- ">="
warns <- capture_warnings(
Install(paste0("fpCompare (", ineq, ver, ")"), install = "force"))
ip <- installed.packages(noCache = TRUE) |> as.data.table()
expect_true(compareVersion2(ip[Package %in% "fpCompare"]$Version, ver, inequality = ineq))
# Require("fpCompare (>=0.2.4)", install = "force"))
# packageVersion("fpCompare")
if (!getOption("Require.usePak", TRUE)) {
withr::local_options(Require.installPackagesSys = TRUE)
mess <- capture_messages(Require("fpCompare (>=0.2.4)", install = "force", require = FALSE))
warnsAfter <- capture_warnings(packageVersion("fpCompare"))
# expect_true(grepl(.txtMsgIsInUse, warns))
expect_false(isTRUE(grepl(.txtMsgIsInUse, warnsAfter)))
}
warns <- capture_warnings( # fpCompare namespace cannot be unloaded: cannot open file?
# and also restarting interuupted promise evaluation
try(detach("package:fpCompare", unload = TRUE), silent = TRUE) # some are not attaching
)
}
if (FALSE) {
pkgs <- c("fpCompare", "rlang", "cli", "crayon", "stringr", "lobstr")
a <- unique(extractPkgName(unlist(unname(pkgDep(pkgs)))))
cacheClearPackages(a, ask = FALSE)
library(sys); library(waldo)
setLibPaths(tempdir3())
try(remove.packages(a))
options(Require.installPackagesSys = 1L)
ipBefore <- installed.packages(lib.loc = .libPaths()[1], noCache = TRUE)
system.time(Install(pkgs, verbose = 1))
# system.time(install.packages(pkgs))
ipAfter <- installed.packages(lib.loc = .libPaths()[1], noCache = TRUE)
}
if (FALSE) { # benchmark pak and Require
library(Require)
options(Require.installPackagesSys = 2, Require.cloneFrom = Sys.getenv("R_LIBS_USER"))
setLinuxBinaryRepo()
pkgsKeep <- c('rlang', "R6", "cli", "withr", "magrittr", "data.table")
Install(pkgsKeep)
pkgs <- c("PredictiveEcology/fpCompare", "PredictiveEcology/reproducible@modsForLargeArchives",
"rlang", "purrr", "ggplot2")
a <- pkgDep(pkgs)
N = 4
# st <- list()
st[["Require"]] <- system.time(replicate(N, {
try(remove.packages(setdiff(extractPkgName(unname(unlist(a))), pkgsKeep)))
cacheClearPackages(ask = FALSE)
Install(pkgs)
}))
st[["pak"]] <- system.time(replicate(N, {
try(remove.packages(setdiff(extractPkgName(unname(unlist(a))), pkgsKeep)))
pak::cache_clean()
pak::pkg_install(pkgs, ask = FALSE)
}))
Map(x = st, function(x) x[[3]]/N)
# min lq mean median uq max neval
#13.759182 13.873962 13.999130 13.98874 14.11910 14.24947 3
# 7.367775 8.914831 9.495963 10.46189 10.56006 10.65823 3
}
if (getRversion() >= "4.3.0") { # R 4.2.x and below can't seem to build many of the PE ecosystem from src
# Mistakenly have a partial repos, i.e., without getOption("repos") -- This failed previously Jul 2, 2024
dir44 <- tempdir2(.rndstr(1))
silence <- dir.create(dir44, recursive = TRUE, showWarnings = FALSE)
on.exit(unlink(dir44, recursive = TRUE), add = TRUE)
warns <- capture_warnings(
Require::Install("LandR", repos = "predictiveecology.r-universe.dev", libPaths = dir44,
standAlone = TRUE)
)
expect_match(warns, paste(sep = "|", .txtPleaseRestart, .txtCouldNotBeInstalled, .txtInstallationPkgFailed))
}
ooo <- options(Require.cachePkgDir = NULL)
testthat::expect_true(identical(cacheGetOptionCachePkgDir(), NULL))
options(ooo)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.