tests/testthat/test-private-lib.R

test_that("loading package from private lib", {
  skip_on_cran()
  on.exit(pkg_data$ns <- list(), add = TRUE)
  pkg_data$ns$processx <- NULL
  gc()

  ## Load
  load_private_package("processx", "c_")
  pkgdir <- normalizePath(pkg_data$ns$processx[["__pkg-dir__"]])

  ## Check if loaded
  expect_true(is.function(pkg_data$ns$processx$run))
  expect_true(file.exists(pkgdir))
  paths <- normalizePath(sapply(.dynLibs(), "[[", "path"))
  expect_true(any(grepl(pkgdir, paths, fixed = TRUE)))
})

test_that("cleanup of temp files", {
  skip("cleanup not working")
  skip_on_cran()
  on.exit(pkg_data$ns <- list(), add = TRUE)
  pkg_data$ns$processx <- NULL
  gc()

  ## Load
  load_private_package("processx", "c_")
  pkgdir <- normalizePath(pkg_data$ns$processx[["__pkg-dir__"]])

  ## Check if loaded
  expect_true(is.function(pkg_data$ns$processx$run))
  expect_true(file.exists(pkgdir))
  paths <- normalizePath(sapply(.dynLibs(), "[[", "path"))
  expect_true(any(grepl(pkgdir, paths, fixed = TRUE)))

  pkg_data <- asNamespace("pak")$pkg_data
  pkg_data$ns$processx <- NULL
  gc(); gc()

  expect_false(file.exists(pkgdir))
  paths <- sapply(.dynLibs(), "[[", "path")
  expect_false(any(grepl(pkgdir, paths, fixed = TRUE)))
})

test_that("no interference", {
  skip_on_cran()
  on.exit(pkg_data$ns <- list(), add = TRUE)
  pkg_data$ns$processx <- NULL
  gc()

  asNamespace("ps")
  expect_true("ps" %in%  loadedNamespaces())
  expect_true("ps" %in% sapply(.dynLibs(), "[[", "name"))

  load_private_package("ps")
  expect_true(is.function(pkg_data$ns$ps$ps))
  expect_true(is.function(asNamespace("ps")$ps))

  pkg_data$ns$ps <- NULL
  gc(); gc()

  expect_true("ps" %in% loadedNamespaces())
  expect_true("ps" %in% sapply(.dynLibs(), "[[", "name"))
})
r-lib/pak documentation built on May 28, 2024, 10:33 p.m.