tests/testthat/test-dependent-packages.R

test_that("dependent_packages", {
  ins <- readRDS("fixtures/installed.rda")
  dep <- readRDS("fixtures/devtools-deps.rda")
  alldsc <- readRDS("fixtures/descs.rda")

  local_mocked_bindings(installed.packages = function() ins, .package = "utils")
  local_mocked_bindings(pkg_desc = function(x) alldsc[[x]])
  local_mocked_bindings(loadedNamespaces = function() ins)

  local_mocked_bindings(getNamespaceVersion = function(x) alldsc[[x]]$Version)
  local_mocked_bindings(
    search = function() paste0("package:", dep$package[dep$attached])
  )
  local_mocked_bindings(getNamespaceInfo = function(x, ...) alldsc[[x]]$Version)

  exp <- dep[, setdiff(colnames(dep), c("path", "loadedpath"))]
  tec <- dependent_packages("devtools", NA)
  tec <- tec[, setdiff(colnames(tec), c("path", "loadedpath"))]
  expect_equal(exp, tec)
})

test_that("pkg_path_disk", {
  p1 <- pkg_path_disk(utils::packageDescription("stats"))
  expect_equal(
    read.dcf(file.path(p1, "DESCRIPTION"))[, "Package"],
    c(Package = "stats")
  )
})

test_that("find_deps", {
  ins <- readRDS("fixtures/installed.rda")
  expect_equal(
    sort_ci(find_deps("devtools", ins)),
    sort_ci(
      c(
        "devtools",
        "callr",
        "httr",
        "utils",
        "tools",
        "methods",
        "memoise",
        "whisker",
        "digest",
        "rstudioapi",
        "jsonlite",
        "stats",
        "git2r",
        "withr",
        "pkgbuild",
        "pkgload",
        "curl",
        "crayon",
        "testthat",
        "BiocInstaller",
        "Rcpp",
        "MASS",
        "rmarkdown",
        "knitr",
        "hunspell",
        "lintr",
        "bitops",
        "roxygen2",
        "evaluate",
        "rversions",
        "covr",
        "gmailr",
        "processx",
        "R6",
        "assertthat",
        "debugme",
        "grDevices",
        "graphics",
        "mime",
        "openssl",
        "desc",
        "rprojroot",
        "backports",
        "praise",
        "magrittr",
        "xml2",
        "BH",
        "yaml",
        "htmltools",
        "caTools",
        "base64enc",
        "stringr",
        "highr",
        "markdown",
        "stringi",
        "rex",
        "codetools",
        "stringdist",
        "xmlparsedata",
        "lazyeval",
        "parallel",
        "brew",
        "commonmark"
      )
    )
  )

  ## An edge case
  expect_equal(
    find_deps("foobar", top_dep = character(), rec_dep = character()),
    "foobar"
  )
})

test_that("find_deps", {
  ins <- readRDS("fixtures/installed.rda")
  expect_equal(
    find_deps("devtools", ins, top_dep = FALSE),
    character()
  )
})

test_that("dep_types", {
  skip_on_cran()
  withr::local_options(repos = c(CRAN = "https://cloud.r-project.org"))
  expect_silent(
    tools::package_dependencies("sessioninfo", which = dep_types())
  )
})

test_that("interpret_dependencies", {
  skip_on_cran()
  withr::local_options(repos = c(CRAN = "https://cloud.r-project.org"))
  expect_silent(
    tools::package_dependencies(
      "sessioninfo",
      which = interpret_dependencies(TRUE)[[1]]
    )
  )
  expect_silent(
    tools::package_dependencies(
      "sessioninfo",
      which = interpret_dependencies(TRUE)[[2]]
    )
  )

  expect_equal(
    interpret_dependencies(FALSE),
    list(character(), character())
  )

  expect_silent(
    tools::package_dependencies(
      "sessioninfo",
      which = interpret_dependencies(NA)[[1]]
    )
  )
  expect_silent(
    tools::package_dependencies(
      "sessioninfo",
      which = interpret_dependencies(NA)[[2]]
    )
  )

  expect_equal(
    interpret_dependencies("Depends"),
    list("Depends", "Depends")
  )
})
r-lib/sessioninfo documentation built on June 12, 2025, 2:06 p.m.