if (interactive()) {library(testthat); Sys.setenv(NOT_CRAN = "true")} { mirror <- p3m("2024-01-02") if (!is.online(mirror, tryHttp = FALSE)) { # Use http:// for older versions of R mirror <- sub("^https://", "https://", mirror) } rvers <- "4.0" pkgs <- c("MASS") repo_root <- file.path(tempdir(), "miniCRAN", Sys.Date()) new_repo_root <- file.path(tempdir(), "newMiniCRAN", Sys.Date()) if (file.exists(repo_root)) unlink(repo_root, recursive = TRUE) if (file.exists(new_repo_root)) unlink(new_repo_root, recursive = TRUE) # list.files(repo_root, recursive = TRUE) } types <- c("win.binary") names(types) <- c("win.binary") pkg_type <- names(types) test_that("makeRepo downloads files and builds PACKAGES file", { skip_if_offline(mirror) # skip_on_cran() for (pkg_type in names(types)) { # Create local miniCRAN # mockery::stub(makeRepo, "download_packages", mock_download_packages, depth = 1) # mockery::stub(updateRepoIndex, "write_packages", mock_write_packages, depth = 1) pdb <- pkgAvail(repos = mirror, type = pkg_type, Rversion = rvers, quiet = TRUE) pkgList <- pkgDep(pkgs, availPkgs = pdb, repos = mirror, type = pkg_type, suggests = FALSE, Rversion = rvers) prefix <- repoPrefix(pkg_type, Rversion = rvers) dir.create(repo_root, recursive = TRUE, showWarnings = FALSE) ret <- makeRepo(pkgList, path = repo_root, repos = mirror, type = pkg_type, quiet = TRUE, Rversion = rvers) expect_type(ret, "character") expect_equal(length(ret), length(pkgList)) expect_true( .checkForRepoFiles(repo_root, pkgList, prefix) ) expect_true( file.exists(file.path(repo_root, prefix, "PACKAGES.gz")) ) expect_true( all( pkgList %in% pkgAvail(repos = repo_root, type = pkg_type, Rversion = rvers)[, "Package"] ) ) # Create miniCRAN from existing miniCRAN localCRAN <- paste0("file:///", repo_root) pdb <- pkgAvail(repos = localCRAN, type = pkg_type, Rversion = rvers) pkgList <- pkgDep(pkgs, availPkgs = pdb, repos = localCRAN, type = pkg_type, suggests = FALSE, Rversion = rvers) prefix <- repoPrefix(pkg_type, Rversion = rvers) dir.create(new_repo_root, recursive = TRUE, showWarnings = FALSE) ret <- makeRepo(pkgList, path = new_repo_root, repos = localCRAN, type = pkg_type, quiet = TRUE, Rversion = rvers) expect_type(ret, "character") expect_equal(length(ret), length(pkgList)) expect_true( .checkForRepoFiles(new_repo_root, pkgList, prefix) ) expect_true( file.exists(file.path(new_repo_root, prefix, "PACKAGES.gz")) ) expect_true( all( pkgList %in% pkgAvail(repos = new_repo_root, type = pkg_type, Rversion = rvers)[, "Package"] ) ) } }) unlink(repo_root, recursive = TRUE)