Package 'disposables'

Title: Create Disposable R Packages for Testing
Description: Create disposable R packages for testing. You can create, install and load multiple R packages with a single function call, and then unload, uninstall and destroy them with another function call. This is handy when testing how some R code or an R package behaves with respect to other packages.
Authors: Gábor Csárdi
Maintainer: Gábor Csárdi <[email protected]>
License: MIT + file LICENSE
Version: 1.0.3
Built: 2024-06-24 04:17:53 UTC
Source: https://github.com/gaborcsardi/disposables

Help Index


Get rid of temporary packages

Description

Get rid of temporary packages

Usage

dispose_packages(packages, unattach = TRUE, unload = unattach,
  delete = TRUE, delete_lib_dir = delete)

Arguments

packages

A list returned by make_packages.

unattach

Whether to unattach the packages.

unload

Whether to unload the packages. It is not possible to unload without unattaching.

delete

Whether to delete the installed packages from the lib_dir. If delete_lib_dir is TRUE, then this should be TRUE as well.

delete_lib_dir

Whether to delete the the whole lib_dir.

Examples

pkg <- make_packages(
  foo1 = { f <- function() print("hello!") ; d <- 1:10 },
  foo2 = { f <- function() print("hello again!") ; d <- 11:20 }
)

foo1::f()
foo2::f()
foo1::d
foo2::d

## Unattach only
dispose_packages(pkg, unload = FALSE, delete = FALSE)
"package:foo1" %in% search()
"foo1" %in% loadedNamespaces()
dir(pkg$lib_dir)

## Unload
dispose_packages(pkg, delete = FALSE)
"package:foo1" %in% search()
"foo1" %in% loadedNamespaces()
dir(pkg$lib_dir)

## Delete completely
dispose_packages(pkg)
"package:foo1" %in% search()
"foo1" %in% loadedNamespaces()
file.exists(pkg$lib_dir)

Create, install, load and attach multiple disposable packages

Description

If a package with the same name as a disposable one, is loaded, then it will be unloaded. If a package with same name as a disposable on is installed in lib_dir, then it will be overwritten. (lib_dir is usually a temporary directory, so this is not a big problem.)

Usage

make_packages(..., lib_dir = tempfile(), imports = character(),
  quiet = TRUE)

Arguments

...

Named expressions. A separate package with the given name is created for each.

lib_dir

Directory to install the package to. Defaults to a temporary directory that is deleted once the R session is over.

imports

The 'Imports' field in the DESCRIPTION file, the packages to import in each disposable package. It can be a character vector, which applies to all packages, or a list of character vectors, one for each package.

quiet

Whether to show the installation process of disposable packages.

Details

Note that if you specify lib_dir and it points to an existing directory, make_package overwrites the packages there. If an error happens during installation or loading of the disposables packages, then it will not restore the original contents of lib_dir, but it will remove all newly installed disposable packages, even the ones that were installed cleanly.

Value

A named list with entries:

  • lib_dir The directory in which the packages are installed.

  • package The named of the packages.

Examples

pkg <- make_packages(
  foo1 = { f <- function() print("hello!") ; d <- 1:10 },
  foo2 = { f <- function() print("hello again!") ; d <- 11:20 }
)
foo1::f()
foo2::f()
foo1::d
foo2::d
dispose_packages(pkg)

See Also

dispose_packages

Examples

## See above and also in the README: https://r-pkg.org/pkg/disposables