R Under development (unstable) (2024-10-20 r87250 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > testSkeletonGit2r <- function(wd) { + # options(error=traceback) + + # make a package to test with + .foofn <- function() "foo" + utils::package.skeleton(name = "foo", list=".foofn", environment = environment(), path=wd) + print(dir(wd, recursive = TRUE)) + + message("building") + + #https://github.com/r-lib/testthat/issues/129 + R_TESTS=Sys.getenv("R_TESTS") + Sys.setenv(R_TESTS="") + cwd <- getwd() + setwd(wd) + cmd <- sprintf("%s/bin%s/R CMD build foo --no-manual", + Sys.getenv("R_HOME"), Sys.getenv("R_ARCH_BIN")) + system(cmd) + setwd(cwd) + Sys.setenv(R_TESTS=R_TESTS) + message("dratting") + + # make a repo to test with + rdir <- file.path(wd, "drat") + cat("empty", file=file.path(wd, "index.html")) + + dir.create(rdir) + repo <- git2r::init(rdir) + git2r::config(repo, user.name="Alice", user.email="alice@example.org") + cat("foo", file=file.path(rdir, "README")) + cat("empty", file=file.path(rdir, "index.html")) + git2r::add(repo, "README") + git2r::add(repo, "index.html") + comm <- git2r::commit(repo, "init") + + location <- getOption("dratBranch", "gh-pages") + + if (location == "gh-pages") { + git2r::branch_create(comm,"gh-pages") + } else { + ddir <- file.path(rdir, "docs") + if (!dir.exists(ddir)) dir.create(ddir) + } + + # finally add the package + drat::insertPackage(file = file.path(wd, "foo_1.0.tar.gz"), repodir = rdir, commit = "test") + res <- list(status = git2r::status(repo), + dir = unique(dirname(dir(rdir, recursive = TRUE)))) + if(!all(lengths(res$status) == 0L)){ + stop("Unstaged files") + } + if (location == "gh-pages") { + if (!all(c(".","src/contrib") %in% res$dir)) stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib") %in% res$dir)) stop("Wrong dir structure") + } + rdir + } > > testRepoActions <- function(repodir){ + if (!dir.exists(file.path(repodir, "docs"))) dir.create(file.path(repodir, "docs")) + cat("empty", file=file.path(repodir, "docs", "index.html")) + src_files <- list.files(system.file("extdata","src", package = "drat"), + pattern = "foo*", + full.names = TRUE) + drat::insertPackage(file = src_files[2], repodir = repodir) + drat::insertPackage(file = src_files[3], repodir = repodir) + repoinfo <- drat:::getRepoInfo(repopath = repodir) + if(nrow(repoinfo) != 3L){ + stop("Not all package files found") + } + # + location <- getOption("dratBranch", "gh-pages") + + bin_files_4_0 <- list.files(system.file("extdata", "4.0", package = "drat"), + pattern = "foo*", + full.names = TRUE) + drat::insertPackages(file = bin_files_4_0, repodir = repodir) + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0") %in% res$dir)) + stop("Wrong dir structure") + } + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = "4.0") + if(nrow(repoinfo) != 9L){ + stop("Wrong package files found") + } + if(sum(repoinfo$newest) != 3L){ + stop("Package 'newest' status wrong") + } + # + bin_files_3_6 <- list.files(system.file("extdata", "3.6", package = "drat"), + pattern = "foo*", + full.names = TRUE) + drat::insertPackages(file = bin_files_3_6, repodir = repodir) + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0", + "bin/macosx/el-capitan/contrib/3.6") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0", + "docs/bin/macosx/el-capitan/contrib/3.6") %in% res$dir)) + stop("Wrong dir structure") + } + # + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = "3.6") + repoinfo2 <- drat::pruneRepo(repopath = repodir, version = "3.6") + if(!all(repoinfo == repoinfo2)){ + stop("test run of pruneRepo changed files") + } + repoinfo <- drat::pruneRepo(repopath = repodir, remove = TRUE, version = "4.0") + if(nrow(repoinfo) != 3L){ + stop("Wrong package files found after pruning") + } + # + repoinfo <- drat::pruneRepo(repopath = repodir, remove = TRUE) + # + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = NA, + type = c("source","binary")) + + if(getRversion() < package_version("4.0")){ + if(nrow(repoinfo) != 4L){ + stop("Wrong package files found after pruning for version = NA") + } + # R 4.1 and 4.2 produces one extra row in the repoinfo compared to R 4.3: + } else if(getRversion() < package_version("4.3")){ + if(nrow(repoinfo) != 7L){ + #stop("Wrong package files found after pruning for version = NA") + warning("Wrong package files found after pruning for version = NA") + } + } else { + if(nrow(repoinfo) != 6L){ + #stop("Wrong package files found after pruning for version = NA") + warning("Wrong package files found after pruning for version = NA") + } + } + repoinfo2 <- drat::pruneRepoForAllRversions(repopath = repodir, remove = TRUE) + if(nrow(repoinfo2) != 4L){ + stop("Wrong package files found after pruning vor all r versions") + } + # + drat::insertPackages(file = src_files, repodir = repodir) + drat::insertPackages(file = bin_files_3_6, repodir = repodir) + drat::insertPackages(file = bin_files_4_0, repodir = repodir) + # + drat::archivePackages(repopath = repodir, type = "source") + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0", + "bin/macosx/el-capitan/contrib/3.6", "src/contrib/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0", + "docs/bin/macosx/el-capitan/contrib/3.6", "docs/src/contrib/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } + drat::insertPackages(file = src_files[3], repodir = repodir, action="archive") + # + drat::archivePackages(repopath = repodir, type = "binary", version = "3.6") + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0", + "bin/macosx/el-capitan/contrib/3.6", + "bin/macosx/el-capitan/contrib/3.6/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0", + "docs/bin/macosx/el-capitan/contrib/3.6", + "docs/bin/macosx/el-capitan/contrib/3.6/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } + # + drat::archivePackages(repopath = repodir, type = "win.binary", version = "4.0") + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0", + "bin/macosx/el-capitan/contrib/3.6", + "bin/macosx/el-capitan/contrib/3.6/Archive/foo", + "bin/windows/contrib/4.0/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0", + "docs/bin/macosx/el-capitan/contrib/3.6", + "docs/bin/macosx/el-capitan/contrib/3.6/Archive/foo", + "docs/bin/windows/contrib/4.0/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } + # + repoinfo <- drat:::getRepoInfo(repopath = repodir, version=NA) + if(nrow(repoinfo) != 6L){ + stop("Wrong package files found for getRepoInfo") + } + drat::insertPackages(file = src_files, repodir = repodir) + drat::insertPackages(file = bin_files_3_6, repodir = repodir) + drat::insertPackages(file = bin_files_4_0, repodir = repodir) + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = "4.0") + if(nrow(repoinfo) != 10L){ + stop("Wrong package files found for getRepoInfo after fill up") + } + # + drat::archivePackages(repopath = repodir, version = "4.0") + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = "4.0") + if(nrow(repoinfo) != 3L){ + stop("Wrong package files found for getRepoInfo after archiving") + } + res <- list(dir = unique(dirname(dir(repodir, recursive = TRUE)))) + if (location == "gh-pages") { + if (!all(c(".","src/contrib","bin/macosx/contrib/4.0","bin/windows/contrib/4.0", + "bin/macosx/el-capitan/contrib/3.6", + "bin/macosx/el-capitan/contrib/3.6/Archive/foo", + "bin/windows/contrib/4.0/Archive/foo", + "src/contrib/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } else { + if (!all(c(".","docs/src/contrib","docs/bin/macosx/contrib/4.0","docs/bin/windows/contrib/4.0", + "docs/bin/macosx/el-capitan/contrib/3.6", + "docs/bin/macosx/el-capitan/contrib/3.6/Archive/foo", + "docs/bin/windows/contrib/4.0/Archive/foo", + "docs/src/contrib/Archive/foo") %in% res$dir)) + stop("Wrong dir structure") + } + # + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = NA) + if(nrow(repoinfo) != 6L){ + stop("Wrong package files found for getRepoInfo with version = NA") + } + drat::archivePackagesForAllRversions(repopath = repodir) + repoinfo <- drat:::getRepoInfo(repopath = repodir, version = NA) + if(nrow(repoinfo) != 4L){ + stop("Wrong package files found for getRepoInfo after archiving for all R versions") + } + # test insertPackage optional arguments + drat::insertPackages(file = src_files, repodir = repodir, latestOnly = TRUE) + pkgsrds <- ifelse(location == "gh-pages", "src/contrib/PACKAGES.rds", "docs/src/contrib/PACKAGES.rds") + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if(nrow(PACKAGES) != 1L){ + stop("Wrong number of packages written to 'PACKAGES': ", nrow(PACKAGES), " != 1L (A)") + } + drat::insertPackages(file = src_files, repodir = repodir) + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if (nrow(PACKAGES) != 4L){ + stop("Wrong number of packages written to 'PACKAGES': ", nrow(PACKAGES), " != 4L (B)") + } + + repodir2 <- file.path(repodir, if (location == "gh-pages") "" else "docs") + # test updateRepo optional arguments -- now seems to update only one ? + drat::insertPackages(file = src_files, repodir = repodir, latestOnly = TRUE) + drat::updateRepo(repopath = repodir2) + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if (nrow(PACKAGES) != 4L){ + stop("Wrong number of packages updated to 'PACKAGES': ", nrow(PACKAGES), " != 4L (C)") + } + + drat::insertPackages(file = src_files, repodir = repodir, latestOnly = TRUE) + drat::updateRepo(repopath = repodir, latestOnly = TRUE) + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if (nrow(PACKAGES) != 1L){ + stop("Wrong number of packages updated to 'PACKAGES': ", nrow(PACKAGES), " != 3L (D)") + } + + drat::insertPackages(file = src_files, repodir = repodir) + drat::updateRepo(repopath = repodir, latestOnly = TRUE) + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if (nrow(PACKAGES) != 4L){ + stop("Wrong number of packages updated to 'PACKAGES': ", nrow(PACKAGES), " != 4L (E)") + } + + file.path(repodir2, "src", "contrib", "foo_1.0.tar.gz") + file.remove(file.path(repodir2, "src", "contrib", "foo_1.0.tar.gz")) + drat::updateRepo(repopath = repodir2, latestOnly = TRUE) + PACKAGES <- readRDS(file.path(repodir, pkgsrds)) + if(nrow(PACKAGES) != 3L){ + stop("Wrong number of packages updated to 'PACKAGES':", nrow(PACKAGES), "!= 3L (F)") + } + } > > runTest <- function(wd, location = "gh-pages"){ + options("dratBranch" = location) + repodir <- testSkeletonGit2r(wd) + testRepoActions(repodir) + unlink(file.path(wd,"foo"), recursive = TRUE) + unlink(file.path(wd,"drat"), recursive = TRUE) + } > > wd <- tempdir() > if (requireNamespace("git2r", quietly=TRUE)) { + runTest(wd, "gh-pages") + runTest(wd, "docs") + } Creating directories ... Creating DESCRIPTION ... Creating NAMESPACE ... Creating Read-and-delete-me ... Saving functions and data ... Making help files ... Done. Further steps are described in 'D:\temp\Rtmp4s9JcE/foo/Read-and-delete-me'. [1] "foo/DESCRIPTION" "foo/NAMESPACE" "foo/R/foo-internal.R" [4] "foo/Read-and-delete-me" "foo/man/foo-package.Rd" building * checking for file 'foo/DESCRIPTION' ... OK * preparing 'foo': * checking DESCRIPTION meta-information ... OK * installing the package to process help pages * saving partial Rd database * checking for LF line-endings in source and make files and shell scripts * checking for empty or unneeded directories * building 'foo_1.0.tar.gz' dratting Added and committed foo_1.0.tar.gz plus PACKAGES files. Still need to push. Creating directories ... Creating DESCRIPTION ... Creating NAMESPACE ... Creating Read-and-delete-me ... Saving functions and data ... Making help files ... Done. Further steps are described in 'D:\temp\Rtmp4s9JcE/foo/Read-and-delete-me'. [1] "foo/DESCRIPTION" "foo/NAMESPACE" "foo/R/foo-internal.R" [4] "foo/Read-and-delete-me" "foo/man/foo-package.Rd" "foo_1.0.tar.gz" [7] "index.html" building * checking for file 'foo/DESCRIPTION' ... OK * preparing 'foo': * checking DESCRIPTION meta-information ... OK * installing the package to process help pages * saving partial Rd database * checking for LF line-endings in source and make files and shell scripts * checking for empty or unneeded directories * building 'foo_1.0.tar.gz' dratting The repository 'D:\temp\Rtmp4s9JcE/drat/docs' does not have a top-level 'index.html' file. Consider adding a simple file to avoid 404 results on the repo. A one-line example is 'empty'. Added and committed foo_1.0.tar.gz plus PACKAGES files. Still need to push. There were 11 warnings (use warnings() to see them) > > ## TODO Use > ## > as.package_version(system("sw_vers -productVersion", intern = TRUE)) == 13.1 > ## [1] TRUE > ## if on Darwin and x86_64 (as in tiledb-r's configure.ac with > ## uname=`uname` > ## machine=`uname -m` > ## if test x"${uname}" = x"Darwin" -a x"${machine}" = x"x86_64"; then > ## which we can rework as R system() calls. > ## > ## Use https://en.wikipedia.org/wiki/MacOS_version_history for mininum versions > ## Using macOS 11 ("Big Sur") may work > > proc.time() user system elapsed 2.79 0.68 29.14