Nothing
context("install()")
test_that("Arguments are validated", {
expect_error(
install("foo", "bar"),
"all '...' arguments to 'install\\(\\)' must be named"
)
expect_error(install(TRUE), "is.character\\(pkgs\\) is not TRUE")
expect_error(install(ask="foo"), "is.logical\\(ask\\) is not TRUE")
})
test_that("Helpers filter the right packages", {
.install_filter_r_repos <- BiocManager:::.install_filter_r_repos
.install_filter_github_repos <- BiocManager:::.install_filter_github_repos
r <- "foo"
http <- c("http://foo.bar/baz", "https://foo.bar/baz")
github <- c("foo/bar", "foo/bar@baz")
all <- c(r, http, github)
expect_identical(c(r, http), .install_filter_r_repos(all))
expect_identical(github, .install_filter_github_repos(all))
})
test_that(".install_repos() works", {
.skip_if_misconfigured()
skip_if_offline()
repos <- repositories()
old_pkgs <- matrix(
c("pkgB", "/home/user/dir"), 1, 2,
dimnames=list("pkgB", c("Package", "LibPath")))
inst_pkgs <- matrix(
c("pkgA", "/home/user/dir"), 1, 2,
dimnames=list("pkgA", c("Package", "LibPath")))
expect_identical(
character(0),
.install_repos(
character(), old_pkgs, inst_pkgs, repos = repos, force = FALSE
)
)
})
test_that(".install_github() works", {
.skip_if_misconfigured()
skip_if_offline()
repos <- repositories()
expect_identical(
character(0),
.install_github(character(), repos = repos, update = FALSE, ask = TRUE)
)
})
test_that("Versions are checked in install", {
expect_error(install(version = "0.1"))
expect_error(install(1:3))
expect_error(install(NA))
expect_error(install(c("BioStrings", "S4Vectors", NA)))
expect_error(install(site_repository = c("string1", "string2")))
expect_error(install(TRUE))
expect_error(install(ask = "No"))
expect_error(install(ask = c("No", "Yes", NA)))
expect_error(install(version = c("3.7", "3.6")))
expect_error(install(version = character()))
expect_error(install(version = ""))
expect_error(install(version = "3.4.2"))
})
test_that("pkgs are not re-downloaded when force=FALSE", {
.filter <- BiocManager:::.install_filter_up_to_date
old_pkgs <- matrix(
c("pkgB", "/home/user/dir"), 1, 2,
dimnames=list("pkgB", c("Package", "LibPath")))
inst_pkgs <- matrix(
c("pkgA", "pkgB", "/home/user/dir", "/home/user/dir"), 2, 2,
dimnames=list(c("pkgA", "pkgB"), c("Package", "LibPath")))
# installed and not old
expect_warning(.filter("pkgA", inst_pkgs, old_pkgs, FALSE))
# installed and not old but force
expect_identical(.filter("pkgA", inst_pkgs, old_pkgs, TRUE), "pkgA")
# installed and old
expect_identical(.filter("pkgB", inst_pkgs, old_pkgs, FALSE), "pkgB")
expect_identical(.filter("pkgB", inst_pkgs, old_pkgs, TRUE), "pkgB")
# not installed and no info on old
expect_identical(.filter("pkgC", inst_pkgs, old_pkgs, FALSE), "pkgC")
})
context("install(update = TRUE) filters un-updatable packages")
test_that("masked packages are filtered", {
.filter <- BiocManager:::.package_filter_masked
pkgs0 <- matrix(
character(), 0, 2,
dimnames=list(NULL, c("Package", "LibPath")))
expect_identical(pkgs0, .filter(pkgs0))
paths <- c(tempfile(), tempfile())
for (path in paths) dir.create(path)
oLibPaths <- .libPaths()
on.exit(.libPaths(oLibPaths))
.libPaths(paths)
pkgs <- matrix(
c("Foo", "Bar", "Baz", "Bim", paths, paths), 4, 2,
dimnames=list(c("Foo", "Bar", "Baz", "Bim"), c("Package", "LibPath")))
expect_identical(pkgs, .filter(pkgs))
expect_identical(pkgs[c(1, 3, 2),], .filter(pkgs[c(1, 3, 2),]))
pkgs <- matrix(
c("Foo", "Bar", "Foo", paths, paths[2]), 3, 2,
dimnames=list(c("Foo", "Bar", "Foo"), c("Package", "LibPath")))
expect_identical(pkgs[1:2,], .filter(pkgs))
pkgs <- pkgs[3:1,]
expect_identical(pkgs[2:3,], .filter(pkgs))
})
test_that("unwriteable packages are not considered", {
.filter <- BiocManager:::.package_filter_unwriteable
## setup
dir.create(p0 <- tempfile())
on.exit(unlink(p0, recursive=TRUE))
pkgs0 <- matrix(
character(), 0, 2,
dimnames=list(NULL, c("Package", "LibPath")))
pkgs <- pkgs0
expect_identical(pkgs, .filter(pkgs, NULL))
expect_identical(pkgs, .filter(pkgs, character()))
expect_identical(pkgs, .filter(pkgs, tempdir()))
pkgs <- matrix(c("Foo", p0), 1, byrow=TRUE,
dimnames=list("Foo", c("Package", "LibPath")))
expect_identical(pkgs, .filter(pkgs, NULL))
expect_identical(pkgs, .filter(pkgs, p0))
p1 <- tempfile()
pkgs <- matrix(c("Foo", p1), 1, byrow=TRUE,
dimnames=list("Foo", c("Package", "LibPath")))
expect_identical(pkgs[FALSE,, drop=FALSE], .filter(pkgs, NULL))
expect_identical(pkgs[FALSE,, drop=FALSE], .filter(pkgs, p1))
expect_identical(pkgs, .filter(pkgs, p0))
pkgs <- matrix(
c("Foo", p0, "Bar", p1, "Baz", p0), 3, 2, byrow=TRUE,
dimnames=list(c("Foo", "Bar", "Baz"), c("Package", "LibPath")))
expect_identical(pkgs[c(1, 3),], .filter(pkgs, NULL))
expect_identical(pkgs, .filter(pkgs, p0))
expect_identical(pkgs0, .filter(pkgs, p1))
expect_message(.filter(pkgs, NULL), "^Installation paths not writeable")
if (.Platform$OS.type == "windows")
## how to create a read-only directory?
return(TRUE)
isDirRnW <- dir.create(p2 <- tempfile(), mode="0400") # read but not write
skip_if_not(isDirRnW)
pkgs <- matrix(c("Foo", p2), 1, byrow=TRUE,
dimnames=list("Foo", c("Package", "LibPath")))
expect_identical(pkgs0, .filter(pkgs, NULL))
pkgs <- matrix(
c("Foo", p0, "Bar", p2, "Baz", p0), 3, 2, byrow=TRUE,
dimnames=list(c("Foo", "Bar", "Baz"), c("Package", "LibPath")))
expect_identical(pkgs[c(1, 3),], .filter(pkgs, NULL))
expect_identical(pkgs0, .filter(pkgs, p2))
Sys.chmod(p2, mode="0700")
unlink(p2, recursive=TRUE)
})
test_that("packages can be written", {
skip("too idiosyncratic for standardized testing")
lib <- system.file(package="BiocManager", "tests", "cases",
"lib", "Biobase")
dir.create(locked <- tempfile())
file.copy(lib, locked, recursive=TRUE)
oLibPaths <- .libPaths()
on.exit(.libPaths(oLibPaths))
.libPaths(c(locked, .libPaths()))
Sys.chmod(locked, mode="0500")
install()
Sys.chmod(locked, mode="0700")
})
context("install(version =, ask=...) works")
test_that(".install_ask_up_or_down_grade() works non-interactively", {
skip_if(interactive())
expect_equal(
FALSE,
.install_ask_up_or_down_grade("xx", npkgs = 1L, cmp = 1L, ask = TRUE)
)
expect_equal(
TRUE,
.install_ask_up_or_down_grade("xx", npkgs = 1L, cmp = 1L, ask = FALSE)
)
})
test_that("install() fails with different version (non-interactive)", {
map <- BiocManager:::.version_map()
incr <- 1L
version <-
package_version(paste(version()$major, version()$minor + incr, sep="."))
expect_error(install(version = version))
})
test_that("install() passes the force argument to .install", {
.skip_if_misconfigured()
skip_if_offline()
expect_true(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['force']]
},
`BiocManager:::.version_compare` = function(...) {
0L
},
suppressMessages(
install(force = TRUE, update = FALSE)
)
)
)
expect_false(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['force']]
},
`BiocManager:::.version_compare` = function(...) {
0L
},
suppressMessages(
install(force = FALSE, update = FALSE)
)
)
)
expect_true(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['force']]
},
`BiocManager:::.version_compare` = function(...) {
1L
},
`BiocManager:::.install_n_invalid_pkgs` = function(...) {
0L
},
`BiocManager:::.install_updated_version` = function(...) {
pkgs <<- list(...)[['force']]
},
suppressMessages(
install(force = TRUE, update = FALSE, ask = FALSE)
)
)
)
expect_false(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['force']]
},
`BiocManager:::.version_compare` = function(...) {
1L
},
`BiocManager:::.install_n_invalid_pkgs` = function(...) {
0L
},
`BiocManager:::.install_updated_version` = function(...) {
pkgs <<- list(...)[['force']]
},
suppressMessages(
install(force = FALSE, update = FALSE, ask = FALSE)
)
)
)
expect_false(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['update']]
},
`BiocManager:::.version_compare` = function(...) {
1L
},
`BiocManager:::.install_n_invalid_pkgs` = function(...) {
0L
},
`BiocManager:::.install_updated_version` = function(...) {
pkgs <<- list(...)[['update']]
},
suppressMessages(
install(force = FALSE, update = FALSE, ask = FALSE)
)
)
)
expect_false(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['ask']]
},
`BiocManager:::.version_compare` = function(...) {
1L
},
`BiocManager:::.install_n_invalid_pkgs` = function(...) {
0L
},
`BiocManager:::.install_updated_version` = function(...) {
pkgs <<- list(...)[['ask']]
},
suppressMessages(
install(force = FALSE, update = FALSE, ask = FALSE)
)
)
)
expect_null(
with_mock(
`BiocManager:::.install` = function(...) {
list(...)[['checkBuilt']]
},
`BiocManager:::.version_compare` = function(...) {
1L
},
`BiocManager:::.install_n_invalid_pkgs` = function(...) {
0L
},
`BiocManager:::.install_updated_version` = function(...) {
pkgs <<- list(...)[['checkBuilt']]
},
suppressMessages(
install(
force = FALSE, checkBuilt = TRUE,
update = FALSE, ask = FALSE
)
)
)
)
})
test_that("install() without package names passes ... to install.packages", {
.skip_if_misconfigured()
object <- FALSE
with_mock(
available.packages = function(...) {
cbind(
Package = "BiocGenerics", Version = "0.33.0",
LibPath = .libPaths()[1]
)
},
old.packages = function(...) {
## claim that BiocGenerics is out-of-date
cbind(
Package = "BiocGenerics", Version = "0.32.0",
LibPath = .libPaths()[1]
)
},
install.packages = function(pkgs, ..., INSTALL_opts) {
object <<-
identical(pkgs, c(Package = "BiocGenerics")) &&
identical(INSTALL_opts, "--build")
},
install(ask = FALSE, INSTALL_opts = "--build")
)
expect_true(object)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.