tests/testthat/test-checkout.R

test_that("we can check out packages from our local repository", {

  # enter test scope
  project <- renv_tests_scope()
  init()

  # check out a package + its dependencies; this invocation is
  # similar in spirit to a plain `install()` call
  renv_tests_dependencies("breakfast")
  checkout(packages = "breakfast")

  # check that they were installed
  expect_true(renv_package_installed("breakfast"))
  expect_true(renv_package_installed("bread"))

})

test_that("checkout with actions = 'snapshot' creates a lockfile without installing", {

  project <- renv_tests_scope()
  init()

  # checkout with snapshot action only -- no packages should be installed
  checkout(packages = "breakfast", actions = "snapshot")

  # packages should not be installed
  expect_false(renv_package_installed("breakfast"))
  expect_false(renv_package_installed("bread"))

  # lockfile should exist and contain the full dependency tree
  lockfile <- renv_lockfile_read(paths$lockfile(project = project))
  records <- renv_lockfile_records(lockfile)

  expect_true("breakfast" %in% names(records))
  expect_true("oatmeal" %in% names(records))
  expect_true("toast" %in% names(records))
  expect_true("bread" %in% names(records))

  # records should have dependency metadata
  expect_identical(records$breakfast$Source, "Repository")
  expect_identical(records$breakfast$Version, "1.0.0")
  expect_true(!is.null(records$breakfast$Depends))

})

test_that("we can check out packages from the package manager instance", {

  skip_on_cran()
  skip_if(Sys.info()[["machine"]] == "aarch64")
  skip_if(getRversion() >= "4.6.0")

  renv_tests_scope()
  init()

  # ensure we reset repos on exit
  renv_scope_options(repos = getOption("repos"))

  # install rlang from an old snapshot
  checkout(date = "2023-01-02", packages = "rlang")

  # check that we installed the requested version
  expect_true(renv_package_installed("rlang"))
  expect_true(renv_package_version("rlang") == "1.0.6")

})

Try the renv package in your browser

Any scripts or data that you put into this service are public.

renv documentation built on March 25, 2026, 5:07 p.m.