test_that("reinstall, standard", {
pkgcache::pkg_cache_delete_files()
setup_fake_apps()
lib <- withr::local_tempdir("pkgdepends-")
config <- list(library = lib)
p <- new_pkg_installation_proposal("pkg3", config = config)
suppressMessages(p$solve())
suppressMessages(p$download())
suppressMessages(p$install())
p <- new_pkg_installation_proposal("pkg1", config = config)
suppressMessages(p$solve())
expect_snapshot({
"pkg1 is already installed"
p$get_solution()
}, transform = transform_installed_in_temp)
p <- new_pkg_installation_proposal("pkg3?reinstall", config = config)
suppressMessages(p$solve())
expect_snapshot({
"request a reinstall"
p$get_solution()
}, transform = transform_installed_in_temp)
p <- new_pkg_installation_proposal(
c("pkg3", "pkg1=?reinstall"),
config = config
)
suppressMessages(p$solve())
expect_snapshot({
"request a reinstall of a dependency"
p$get_solution()
}, transform = transform_installed_in_temp)
p <- new_pkg_installation_proposal(
c("pkg3", "pkg1?reinstall"),
config = config
)
suppressMessages(p$solve())
expect_snapshot({
"one reinstall, one not"
p$get_solution()
}, transform = transform_installed_in_temp)
})
test_that("reinstsll from URL", {
pkgcache::pkg_cache_delete_files()
setup_fake_apps()
lib <- withr::local_tempdir("pkgdepends-")
config <- list(library = lib)
p <- new_pkg_installation_proposal("pkg3", config = config)
suppressMessages(p$solve())
suppressMessages(p$download())
suppressMessages(p$install())
url <- paste0(
fake_cran$url(),
"/src/contrib/Archive/pkg1/pkg1_0.9.0.tar.gz"
)
p <- new_pkg_installation_proposal(
paste0("url::", url, "?reinstall"),
config = config
)
suppressMessages(p$solve())
expect_snapshot({
"reinstall from direct URL"
p$get_solution()
}, transform = function(x) transform_local_port(transform_installed_in_temp(x)))
p <- new_pkg_installation_proposal(
c("pkg1=?reinstall", paste0("url::", url)),
config = config
)
suppressMessages(p$solve())
expect_snapshot({
"reinstall from URL, extra parameters"
p$get_solution()
}, transform = function(x) transform_local_port(transform_installed_in_temp(x)))
})
test_that("source", {
repo <- dcf("
Package: pkg
Imports: pkg2
Package: pkg2
")
setup_fake_apps(
cran_repo = repo,
cran_options = list(platforms = c("windows", "source"))
)
p <- suppressMessages(new_pkg_installation_proposal(
"pkg?source",
config = list(
dependencies = TRUE,
library = tempfile(),
platforms = c("x86_64-w64-mingw32", "source")
)
))
suppressMessages(p$resolve())
suppressMessages(p$solve())
sol <- p$get_solution()$data
sol <- sol[order(sol$ref), ]
expect_snapshot(sol[, c("package", "platform")])
})
test_that("source for dependency", {
repo <- dcf("
Package: pkg
Imports: pkg2
Package: pkg2
")
setup_fake_apps(
cran_repo = repo,
cran_options = list(platforms = c("windows", "source"))
)
p <- suppressMessages(new_pkg_installation_proposal(
c("pkg", "pkg2=?source"),
config = list(
dependencies = TRUE,
library = tempfile(),
platforms = c("x86_64-w64-mingw32", "source")
)
))
suppressMessages(p$resolve())
suppressMessages(p$solve())
sol <- p$get_solution()$data
sol <- sol[order(sol$ref), ]
expect_snapshot(sol[, c("package", "platform")])
})
test_that("?ignore is ignored", {
lib <- tempfile()
lock <- tempfile()
on.exit(unlink(c(lib, lock), recursive = TRUE), add = TRUE)
repo <- dcf("
Package: pkg
Suggests: pkg2
Package: pkg2
Package: pkg3
")
setup_fake_apps(cran_repo = repo)
p <- suppressMessages(new_pkg_installation_proposal(
c("pkg", "pkg2=?ignore"),
config = list(
dependencies = TRUE,
library = lib
)
))
suppressMessages(p$resolve())
suppressMessages(p$solve())
sol <- p$get_solution()$data
sol <- sol[order(sol$ref), ]
expect_equal(sol$package, "pkg")
p$create_lockfile(lock)
plan <- new_pkg_installation_plan(lockfile = lock)
expect_equal(
plan$get_solution()$data$dependencies,
list(character())
)
})
test_that("?ignore-before-r is ignored", {
lib <- tempfile()
lock <- tempfile()
on.exit(unlink(c(lib, lock), recursive = TRUE), add = TRUE)
repo <- dcf("
Package: pkg
Suggests: pkg2
Package: pkg2
Package: pkg3
")
setup_fake_apps(cran_repo = repo)
p <- suppressMessages(new_pkg_installation_proposal(
c("pkg", "pkg2=?ignore-before-r=100.0"),
config = list(
dependencies = TRUE,
library = lib
)
))
suppressMessages(p$resolve())
suppressMessages(p$solve())
sol <- p$get_solution()$data
sol <- sol[order(sol$ref), ]
expect_equal(sol$package, "pkg")
p$create_lockfile(lock)
plan <- new_pkg_installation_plan(lockfile = lock)
expect_equal(
plan$get_solution()$data$dependencies,
list(character())
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.