test_that("non-R apps don't have packages", {
app_dir <- local_temp_app(list(index.html = ""))
out <- snapshotPackratDependencies(app_dir)
expect_equal(out, data.frame())
})
test_that("manifest has correct data types", {
app <- local_temp_app(list("index.Rmd" = ""))
deps <- snapshotPackratDependencies(app)
expect_type(deps$description, "list")
expect_type(deps$description[[1]], "list")
})
test_that("uninstalled packages error", {
app <- local_temp_app(list("index.Rmd" = c(
"```{r}",
"library(doesntexist1)",
"library(doesntexist2)",
"```"
)))
expect_snapshot(
snapshotPackratDependencies(app),
error = TRUE,
transform = function(x) gsub('"', "'", x, fixed = TRUE)
)
})
test_that("recommended packages are snapshotted", {
skip_if_not_installed("MASS")
app <- local_temp_app(list("index.Rmd" = c(
"```{r}",
"library(MASS)",
"```"
)))
deps <- snapshotPackratDependencies(app)
expect_true("MASS" %in% deps$Package)
})
test_that("works with BioC packages", {
skip_on_cran()
skip_on_ci()
app <- local_temp_app(list("index.Rmd" = c(
"```{r}",
"library(Biobase)",
"```"
)))
withr::local_options(repos = c(
CRAN = "https://cran.rstudio.com",
BioC = "https://bioconductor.org/packages/release/bioc"
))
deps <- snapshotPackratDependencies(app)
Biobase <- deps[deps$Package == "Biobase", ]
expect_equal(Biobase$Source, "Bioconductor")
expect_equal(Biobase$Repository, "https://bioconductor.org/packages/release/bioc")
BiocGenerics <- deps[deps$Package == "BiocGenerics", ]
expect_equal(BiocGenerics$Source, "Bioconductor")
expect_equal(BiocGenerics$Repository, "https://bioconductor.org/packages/release/bioc")
})
# addPackratSnapshot() ----------------------------------------------------
test_that("cleans up implicit dependency files", {
dir <- withr::local_tempdir()
addPackratSnapshot(dir, "rlang")
expect_equal(list.files(dir), "packrat")
})
# standardizePackratPackage -----------------------------------------
test_that("standardizeRepos adds names and normalizes paths", {
repos <- c(ONE = "https://cran1.com", "https://cran2.com/")
expect_equal(
standardizeRepos(repos),
c(ONE = "https://cran1.com", repo_2 = "https://cran2.com")
)
})
test_that("SCM records are left alone", {
bitbucket <- list(Package = "pkg", Source = "bitbucket")
gitlab <- list(Package = "pkg", Source = "gitlab")
github <- list(Package = "pkg", Source = "github")
expect_equal(
standardizePackratPackage(bitbucket),
list(Source = "bitbucket", Repository = NA_character_)
)
expect_equal(
standardizePackratPackage(gitlab),
list(Source = "gitlab", Repository = NA_character_)
)
expect_equal(
standardizePackratPackage(github),
list(Source = "github", Repository = NA_character_)
)
})
test_that("CRAN & BioC get normalized repo", {
CRAN <- list(Package = "pkg1", Source = "CRAN")
Bioconductor <- list(Package = "pkg2", Source = "Bioconductor")
packages <- data.frame(
Package = c("pkg1", "pkg2", "pkg3"),
Repository = paste0(
c("https://a.com", "https://b.com", "https://cran.com"),
"/src/contrib"
),
stringsAsFactors = FALSE
)
expect_equal(
standardizePackratPackage(CRAN, packages),
list(Source = "CRAN", Repository = "https://a.com")
)
expect_equal(
standardizePackratPackage(Bioconductor, packages),
list(Source = "Bioconductor", Repository = "https://b.com")
)
})
test_that("packages installed from other repos get correctly named", {
pkg <- list(Package = "pkg", Source = "https://test2.com")
packages <- as.matrix(data.frame(
Package = "pkg",
Version = "1.0.0",
Repository = "https://test2.com/src/contrib",
stringsAsFactors = FALSE
))
repos <- c(TEST1 = "https://test1.com", TEST2 = "https://test2.com")
expect_equal(
standardizePackratPackage(pkg, packages, repos = repos),
list(Source = "TEST2", Repository = "https://test2.com")
)
})
test_that("source packages can't be installed", {
source <- list(Package = "pkg1", Source = "source")
expect_equal(
standardizePackratPackage(source),
list(Source = NA_character_, Repository = NA_character_)
)
})
test_that("locally installed CRAN packages are handled correctly", {
packages <- as.matrix(data.frame(
Package = "pkg",
Version = "1.0.0",
Repository = "https://cran.com/src/contrib",
stringsAsFactors = FALSE
))
repos <- c(CRAN = "https://cran.com")
local <- list(
Package = "pkg",
Source = "CustomCRANLikeRepository",
Version = "1.0.0"
)
expect_equal(
standardizePackratPackage(local, packages, repos),
list(Source = "CRAN", Repository = "https://cran.com")
)
local_dev <- list(
Package = "pkg",
Source = "CustomCRANLikeRepository",
Version = "1.0.0.9000"
)
expect_equal(
standardizePackratPackage(local_dev, packages, repos),
list(Source = NA_character_, Repository = NA_character_)
)
archived <- list(
Package = "pkg2",
Source = "CustomCRANLikeRepository",
Version = "1.0.0"
)
expect_equal(
standardizePackratPackage(archived, packages, repos),
list(Source = NA_character_, Repository = NA_character_)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.