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()) ) })