llrs / blogR

My blogdown site with R related posts
https://llrs.dev
0 stars 0 forks source link

Possible improvement for tools::testInstalledPackage #89

Open llrs opened 7 months ago

llrs commented 7 months ago

See https://github.com/r-lib/covr/pull/548#issue-1964311228

Copied from there:

This probably could be a bug to the tools package, but it is easy enough to fix here.

The tools bug is that when install_path is a relative path tools::testInstalledPackages has a failure when type="examples" and silently ignores all tests when type="tests".

path <- normalizePath(".")
package <- basename(path)
install_path <- "../temp_install_path"
out_dir <- file.path(install_path, package)

dir.create(install_path)
utils::install.packages(repos = NULL,
                        lib = install_path,
                        path,
                        type = "source",
                        INSTALL_opts = c("--example",
                                         "--install-tests",
                                         "--with-keep.source",
                                         "--with-keep.parse.data",
                                         "--no-staged-install",
                                         "--no-multiarch"),
                        quiet = FALSE)

# Fails (when both out_dir is set & install_path is set to a relative path)
tools::testInstalledPackage(package, outDir = out_dir, types = "examples", lib.loc = install_path)
#> Testing examples for package ‘covr’
#> Error in find.package(package, lib.loc) : 
#>   there is no package called ‘covr’

# Silently doesn't run any tests
tools::testInstalledPackage(package, outDir = out_dir, types = "tests", lib.loc = install_path)

# Need to normalize the install_path
normalized_install_path <- normalizePath(install_path)

# Works
tools::testInstalledPackage(package, outDir = out_dir, types = "examples", lib.loc = normalized_install_path)

# Works
tools::testInstalledPackage(package, outDir = out_dir, types = "tests", lib.loc = normalized_install_path)