Skip to content
This repository has been archived by the owner. It is now read-only.
x
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
R
 
 
 
 
man
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.markdown

Disposable R packages, for testing purposes

Linux Build Status Windows Build status CRAN RStudio mirror downloads Coverage Status

Features

The disposable packages are installed in R's temporary directory, so they are cleaned up at the end of the R session.

disposables cleans up after itself, if an error happens during the installation or loading of the disposable packages. If make_packages() fails because of an error, it leaves to temporary garbage behind. In particular,

  • it cleans up the library path and restores .libPaths(),
  • removes the temporary source package directories,
  • removes the installes packages from lib_dir, and
  • unloads the packages that it loaded before the error.

Installation

Install the package from CRAN:

install.packages("disposables")

Usage

make_packages() creates, installs and loads R packages, it takes named expressions, the names will be used as package names.

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

The foo1 and foo2 packages are now loaded.

"package:foo1" %in% search()
#> [1] TRUE
"package:foo2" %in% search()
#> [1] TRUE

You can dispose them with dispose_packages(). This unloads the packages and deletes them from the library directory.

dispose_packages(pkgs)
"package:foo1" %in% search()
#> [1] FALSE
"package:foo2" %in% search()
#> [1] FALSE
file.exists(pkgs$lib_dir)
#> [1] FALSE

Here is a real example that tests cross-package inheritence of R6 classes.

library(disposables)
library(testthat)
test_that("inheritance works across packages", {

  pkgs <- make_packages(
    imports = "R6",

    ## Code to put in package 'R6testA'
    R6testA = {
      AC <- R6Class(
        public = list(
          x = 1
        )
      )
    },

    ## Code to put in package 'R6testB'
    R6testB = {
      BC <- R6Class(
        inherit = R6testA::AC,
        public = list(
          y = 2
        )
      )
    }

  )

  ## In case of an error below
  on.exit(try(dispose_packages(pkgs), silent = TRUE), add = TRUE)

  ## Now ready for the tests
  B <- BC$new()
  expect_equal(B$x, 1)
  expect_equal(B$y, 2)

})

License

MIT @ Gábor Csárdi

About

Create disposable R packages, for testing

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.