Nothing
test_that("repo_get", {
withr::local_options(repos = character())
rps <- repo_get()
expect_s3_class(rps, "tbl")
expect_equal(
names(rps),
c("name", "url", "type", "r_version", "bioc_version")
)
})
test_that("repo_resolve", {
# URL
expect_equal(
repo_resolve("https://foo.bar"),
c(EXTRA = "https://foo.bar")
)
expect_equal(
repo_resolve(c(AAA = "https://aaa.a")),
c(AAA = "https://aaa.a")
)
# MRAN
withr::local_envvar(PKGCACHE_MRAN_URL = NA_character_)
expect_equal(
repo_resolve("MRAN@2020-10-10"),
c(CRAN = "https://packagemanager.posit.co/cran/2020-10-10")
)
expect_equal(
repo_resolve("MRAN@2020-10-10T14:33:56"),
c(CRAN = "https://packagemanager.posit.co/cran/2020-10-10")
)
# PPM
withr::local_envvar(PKGCACHE_PPM_URL = NA_character_)
withr::local_envvar(PKGCACHE_PPM_BINARIES = "false")
withr::local_options(repos = NULL)
expect_equal(
repo_resolve("PPM@latest"),
c(CRAN = "https://packagemanager.posit.co/cran/latest")
)
expect_equal(
repo_resolve("PPM@2021-02-04"),
c(CRAN = "https://packagemanager.posit.co/cran/2021-02-04")
)
expect_equal(
repo_resolve("PPM@2021-02-04T14:33:56"),
c(CRAN = "https://packagemanager.posit.co/cran/2021-02-04")
)
# RSPM
withr::local_envvar(PKGCACHE_PPM_URL = NA_character_)
withr::local_envvar(PKGCACHE_PPM_BINARIES = "false")
expect_equal(
repo_resolve("RSPM@2021-02-04"),
c(CRAN = "https://packagemanager.posit.co/cran/2021-02-04")
)
expect_equal(
repo_resolve("RSPM@2021-02-04T14:33:56"),
c(CRAN = "https://packagemanager.posit.co/cran/2021-02-04")
)
})
test_that("repo_resolve with PPM", {
withr::local_envvar(
PKGCACHE_PPM_URL = NA_character_,
PKGCACHE_PPM_BINARIES = "true",
PKGCACHE_PPM_TRANSACTIONS_URL = repo$url("/ppmversions"),
PKGCACHE_PPM_STATUS_URL = repo$url("/ppmstatus")
)
withr::local_options(repos = NULL)
mockery::stub(
repo_sugar_ppm,
"current_r_platform_data",
data.frame(
stringsAsFactors = FALSE,
cpu = "x86_64",
vendor = "pc",
os = "linux-gnu",
distribution = "ubuntu",
release = "22.04",
platform = "x86_64-pc-linux-gnu-ubuntu-22.04"
)
)
mockery::stub(repo_sugar_ppm, "getRversion", "4.2.2")
expect_equal(
repo_sugar_ppm("PPM@2021-01-26", nm = NULL),
c(CRAN = "https://packagemanager.posit.co/cran/__linux__/jammy/2021-01-26")
)
mockery::stub(repo_sugar_ppm, "getRversion", "1.0.0")
expect_equal(
repo_sugar_ppm("PPM@2021-01-26", nm = NULL),
c(CRAN = "https://packagemanager.posit.co/cran/2021-01-26")
)
})
test_that("repo_add", {
testthat::local_edition(3)
withr::local_options(
repos = character(),
cli.num_colors = 1L,
cli.unicode = FALSE
)
before <- repo_get()
repo_add()
expect_equal(repo_get(), before)
repo_add(URL = "https://my.url", .list = c(PATH = "/foo/bar"))
expect_snapshot(repo_get()[1:3,])
})
test_that("with_repo", {
testthat::local_edition(3)
withr::local_options(
repos = character(),
cli.num_colors = 1L,
cli.unicode = FALSE
)
expect_snapshot(
with_repo(c(URL = "https://my.url"), repo_get()[1,])
)
})
test_that("repo_sugar_url", {
expect_equal(
repo_sugar_url("foobar", "name"),
c(name = "foobar")
)
expect_equal(
repo_sugar_url("foo", NULL),
c(EXTRA = "foo")
)
})
test_that("repo_sugar_path", {
expect_equal(
repo_sugar_path("/x/y", "name"),
c(name = "/x/y")
)
expect_equal(
repo_sugar_path("/x/y", NULL),
c(LOCAL = "/x/y")
)
})
test_that("repo_sugar_mran", {
withr::local_envvar(PKGCACHE_MRAN_URL = NA_character_)
expect_error(
repo_sugar_mran("2017-01-31", NULL),
"PPM snapshots go back to 2017-10-10 only"
)
expect_equal(
repo_sugar_mran("2020-01-21", NULL),
c(CRAN = "https://packagemanager.posit.co/cran/2020-01-21")
)
withr::local_envvar(PKGCACHE_MRAN_URL = "https://my.mran")
expect_equal(
repo_sugar_mran("2020-01-21", NULL),
c(CRAN = "https://my.mran/2020-01-21")
)
})
test_that("repo_sugar_ppm", {
withr::local_envvar(PKGCACHE_PPM_URL = NA_character_)
withr::local_envvar(PKGCACHE_PPM_BINARIES = "false")
withr::local_options(repos = NULL)
expect_equal(
repo_sugar_ppm("2021-02-04", NULL),
c(CRAN = "https://packagemanager.posit.co/cran/2021-02-04")
)
withr::local_envvar(
PKGCACHE_PPM_URL = "https://my.ppm",
PKGCACHE_PPM_REPO = "repo"
)
expect_equal(
repo_sugar_ppm("2021-02-04", NULL),
c(CRAN = "https://my.ppm/repo/2021-02-04")
)
called <- FALSE
mockery::stub(repo_sugar_ppm, "synchronise", function(...) {
called <<- TRUE
NULL
})
expect_error(
repo_sugar_ppm(as.Date("2017-10-01"), NULL),
"PPM snapshots go back to 2017-10-10"
)
expect_true(called)
})
test_that("parse_spec", {
expect_equal(
parse_spec("R-4.0.0"),
as.Date("2020-04-25")
)
expect_equal(
parse_spec("2019-11-19"),
as.Date("2019-11-19")
)
mockery::stub(parse_spec, "parse_spec_pkg", TRUE)
expect_equal(
parse_spec("dplyr-1.0.0"),
TRUE
)
})
test_that("parse_spec_r", {
called <- FALSE
mockery::stub(parse_spec_r, "get_r_versions", function(...) {
called <<- TRUE
pkgenv$r_versions
})
expect_error(
parse_spec_r("100.0.0"),
"Unknown R version"
)
expect_true(called)
})
test_that("get_r_versions", {
testthat::local_edition(3)
withr::local_envvar(PKGCACHE_R_VERSIONS_URL = repo$url("/rversions"))
ret <- get_r_versions()
expect_snapshot(ret)
withr::local_envvar(PKGCACHE_R_VERSIONS_URL = repo$url("/rversionsx"))
expect_error(get_r_versions(), "Failed to download R versions from")
})
test_that("parse_spec_date", {
expect_s3_class(parse_spec_date("2020-10-20"), "Date")
})
test_that("parse_spec_pkg", {
testthat::local_edition(3)
withr::local_envvar(PKGCACHE_CRANDB_URL = repo$url("/crandb/%s"))
expect_error(parse_spec_pkg("foo-"), "Invalid package version")
expect_error(parse_spec_pkg("-1.0.1"), "Invalid package version")
old <- pkgenv$pkg_versions[["dplyr"]]
on.exit(pkgenv$pkg_versions[["dplyr"]] <- old, add = TRUE)
pkgenv$pkg_versions[["dplyr"]] <- NULL
expect_error(
parse_spec_pkg("dplyr-0.0.0"),
"Unknown 'dplyr' version: '0.0.0'",
fixed = TRUE
)
expect_snapshot(pkgenv$pkg_versions[["dplyr"]])
expect_error(
parse_spec_pkg("foobar-1.0.0"),
"Cannot find package versions for"
)
expect_error(
parse_spec_pkg("bad-1.0.0"),
"Failed to download package versions for"
)
expect_equal(parse_spec_pkg("dplyr-1.0.0"), as.Date("2020-05-30"))
})
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.