From 1e2278d3de5b2be06269feb31eda9f66904653a5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 9 Feb 2025 21:28:21 +0100 Subject: [PATCH] Merging upstream version 2.13.0. Signed-off-by: Daniel Baumann --- .pre-commit-config.yaml | 12 +- CHANGELOG.md | 25 +- pre_commit/commands/run.py | 8 +- pre_commit/languages/docker.py | 33 +- pre_commit/languages/r.py | 53 ++- .../resources/empty_template_LICENSE.renv | 7 + .../resources/empty_template_Makefile.PL | 2 +- .../resources/empty_template_activate.R | 440 ++++++++++++++++++ pre_commit/resources/empty_template_go.mod | 2 +- .../resources/empty_template_package.json | 2 +- ..._template_pre_commit_dummy_package.gemspec | 6 - ...ate_pre_commit_placeholder_package.gemspec | 6 + pre_commit/resources/empty_template_setup.py | 2 +- pre_commit/resources/rbenv.tar.gz | Bin 34250 -> 32678 bytes pre_commit/resources/ruby-build.tar.gz | Bin 74218 -> 68689 bytes pre_commit/resources/ruby-download.tar.gz | Bin 5533 -> 5271 bytes pre_commit/store.py | 13 +- setup.cfg | 2 +- testing/make-archives | 42 +- testing/resources/r_hooks_repo/renv/LICENSE | 7 + .../resources/r_hooks_repo/renv/activate.R | 440 ++++++++++++++++++ tests/commands/run_test.py | 37 +- tests/conftest.py | 4 +- tests/languages/docker_test.py | 147 +++++- tests/languages/r_test.py | 29 +- tests/languages/ruby_test.py | 8 +- tests/store_test.py | 2 +- 27 files changed, 1249 insertions(+), 80 deletions(-) create mode 100644 pre_commit/resources/empty_template_LICENSE.renv create mode 100644 pre_commit/resources/empty_template_activate.R delete mode 100644 pre_commit/resources/empty_template_pre_commit_dummy_package.gemspec create mode 100644 pre_commit/resources/empty_template_pre_commit_placeholder_package.gemspec create mode 100644 testing/resources/r_hooks_repo/renv/LICENSE create mode 100644 testing/resources/r_hooks_repo/renv/activate.R diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 214c285..78cbfac 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.4.0 + rev: v4.0.1 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -12,25 +12,25 @@ repos: - id: requirements-txt-fixer - id: double-quote-string-fixer - repo: https://github.com/PyCQA/flake8 - rev: 3.9.0 + rev: 3.9.2 hooks: - id: flake8 additional_dependencies: [flake8-typing-imports==1.10.0] - repo: https://github.com/pre-commit/mirrors-autopep8 - rev: v1.5.6 + rev: v1.5.7 hooks: - id: autopep8 - repo: https://github.com/pre-commit/pre-commit - rev: v2.12.1 + rev: v2.13.0 hooks: - id: validate_manifest - repo: https://github.com/asottile/pyupgrade - rev: v2.12.0 + rev: v2.16.0 hooks: - id: pyupgrade args: [--py36-plus] - repo: https://github.com/asottile/reorder_python_imports - rev: v2.4.0 + rev: v2.5.0 hooks: - id: reorder-python-imports args: [--py3-plus] diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f154c4..e47a1c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +2.13.0 - 2021-05-21 +=================== + +### Features +- Setting `SKIP=...` skips installation as well. + - #1875 PR by @asottile. + - pre-commit-ci/issues#53 issue by @TylerYep. +- Attempt to mount from host with docker-in-docker. + - #1888 PR by @okainov. + - #1387 issue by @okainov. +- Enable `repo: local` for `r` hooks. + - #1878 PR by @lorenzwalthert. +- Upgrade `ruby-build` and `rbenv`. + - #1913 PR by @jalessio. + +### Fixes +- Better detect `r` packages. + - #1898 PR by @lorenzwalthert. +- Avoid warnings with mismatched `renv` versions. + - #1841 PR by @lorenzwalthert. +- Reproducibly produce ruby tar resources. + - #1915 PR by @asottile. + 2.12.1 - 2021-04-16 =================== @@ -1444,7 +1467,7 @@ that have helped us get this far! 0.13.1 - 2017-02-16 =================== -- Fix dummy gem for ruby local hooks +- Fix placeholder gem for ruby local hooks 0.13.0 - 2017-02-16 =================== diff --git a/pre_commit/commands/run.py b/pre_commit/commands/run.py index 05c3268..0fef50d 100644 --- a/pre_commit/commands/run.py +++ b/pre_commit/commands/run.py @@ -271,11 +271,11 @@ def _get_diff() -> bytes: def _run_hooks( config: Dict[str, Any], hooks: Sequence[Hook], + skips: Set[str], args: argparse.Namespace, environ: MutableMapping[str, str], ) -> int: """Actually run the hooks.""" - skips = _get_skips(environ) cols = _compute_cols(hooks) classifier = Classifier.from_config( _all_filenames(args), config['files'], config['exclude'], @@ -403,9 +403,11 @@ def run( ) return 1 - install_hook_envs(hooks, store) + skips = _get_skips(environ) + to_install = [hook for hook in hooks if hook.id not in skips] + install_hook_envs(to_install, store) - return _run_hooks(config, hooks, args, environ) + return _run_hooks(config, hooks, skips, args, environ) # https://github.com/python/mypy/issues/7726 raise AssertionError('unreachable') diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index 9d30568..5b21ec9 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -1,5 +1,7 @@ import hashlib +import json import os +import socket from typing import Sequence from typing import Tuple @@ -8,6 +10,7 @@ from pre_commit.hook import Hook from pre_commit.languages import helpers from pre_commit.prefix import Prefix from pre_commit.util import clean_path_on_failure +from pre_commit.util import cmd_output_b ENVIRONMENT_DIR = 'docker' PRE_COMMIT_LABEL = 'PRE_COMMIT' @@ -15,6 +18,34 @@ get_default_version = helpers.basic_get_default_version healthy = helpers.basic_healthy +def _is_in_docker() -> bool: + try: + with open('/proc/1/cgroup', 'rb') as f: + return b'docker' in f.read() + except FileNotFoundError: + return False + + +def _get_docker_path(path: str) -> str: + if not _is_in_docker(): + return path + hostname = socket.gethostname() + + _, out, _ = cmd_output_b('docker', 'inspect', hostname) + + container, = json.loads(out) + for mount in container['Mounts']: + src_path = mount['Source'] + to_path = mount['Destination'] + if os.path.commonpath((path, to_path)) == to_path: + # So there is something in common, + # and we can proceed remapping it + return path.replace(to_path, src_path) + # we're in Docker, but the path is not mounted, cannot really do anything, + # so fall back to original path + return path + + def md5(s: str) -> str: # pragma: win32 no cover return hashlib.md5(s.encode()).hexdigest() @@ -73,7 +104,7 @@ def docker_cmd() -> Tuple[str, ...]: # pragma: win32 no cover # https://docs.docker.com/engine/reference/commandline/run/#mount-volumes-from-container-volumes-from # The `Z` option tells Docker to label the content with a private # unshared label. Only the current container can use a private volume. - '-v', f'{os.getcwd()}:/src:rw,Z', + '-v', f'{_get_docker_path(os.getcwd())}:/src:rw,Z', '--workdir', '/src', ) diff --git a/pre_commit/languages/r.py b/pre_commit/languages/r.py index 83e6000..d573775 100644 --- a/pre_commit/languages/r.py +++ b/pre_commit/languages/r.py @@ -15,6 +15,7 @@ from pre_commit.util import clean_path_on_failure from pre_commit.util import cmd_output_b ENVIRONMENT_DIR = 'renv' +RSCRIPT_OPTS = ('--no-save', '--no-restore', '--no-site-file', '--no-environ') get_default_version = helpers.basic_get_default_version healthy = helpers.basic_healthy @@ -39,14 +40,19 @@ def _get_env_dir(prefix: Prefix, version: str) -> str: return prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version)) -def _prefix_if_file_entry( +def _prefix_if_non_local_file_entry( entry: Sequence[str], prefix: Prefix, + src: str, ) -> Sequence[str]: if entry[1] == '-e': return entry[1:] else: - return (prefix.path(entry[1]),) + if src == 'local': + path = entry[1] + else: + path = prefix.path(entry[1]) + return (path,) def _entry_validate(entry: Sequence[str]) -> None: @@ -69,13 +75,12 @@ def _entry_validate(entry: Sequence[str]) -> None: def _cmd_from_hook(hook: Hook) -> Tuple[str, ...]: - opts = ('--no-save', '--no-restore', '--no-site-file', '--no-environ') entry = shlex.split(hook.entry) _entry_validate(entry) return ( - *entry[:1], *opts, - *_prefix_if_file_entry(entry, hook.prefix), + *entry[:1], *RSCRIPT_OPTS, + *_prefix_if_non_local_file_entry(entry, hook.prefix, hook.src), *hook.args, ) @@ -89,29 +94,32 @@ def install_environment( with clean_path_on_failure(env_dir): os.makedirs(env_dir, exist_ok=True) shutil.copy(prefix.path('renv.lock'), env_dir) + shutil.copytree(prefix.path('renv'), os.path.join(env_dir, 'renv')) cmd_output_b( 'Rscript', '--vanilla', '-e', f"""\ prefix_dir <- {prefix.prefix_dir!r} - missing_pkgs <- setdiff( - "renv", unname(installed.packages()[, "Package"]) - ) options( repos = c(CRAN = "https://cran.rstudio.com"), renv.consent = TRUE ) - install.packages(missing_pkgs) - renv::activate() + source("renv/activate.R") renv::restore() activate_statement <- paste0( - 'renv::activate("', file.path(getwd()), '"); ' + 'suppressWarnings({{', + 'old <- setwd("', getwd(), '"); ', + 'source("renv/activate.R"); ', + 'setwd(old); ', + 'renv::load("', getwd(), '");}})' ) writeLines(activate_statement, 'activate.R') - is_package <- tryCatch({{ - content_desc <- read.dcf(file.path(prefix_dir, 'DESCRIPTION')) - suppressWarnings(unname(content_desc[,'Type']) == "Package") - }}, - error = function(...) FALSE + is_package <- tryCatch( + {{ + path_desc <- file.path(prefix_dir, 'DESCRIPTION') + suppressWarnings(desc <- read.dcf(path_desc)) + "Package" %in% colnames(desc) + }}, + error = function(...) FALSE ) if (is_package) {{ renv::install(prefix_dir) @@ -120,12 +128,13 @@ def install_environment( cwd=env_dir, ) if additional_dependencies: - cmd_output_b( - 'Rscript', '-e', - 'renv::install(commandArgs(trailingOnly = TRUE))', - *additional_dependencies, - cwd=env_dir, - ) + with in_env(prefix, version): + cmd_output_b( + 'Rscript', *RSCRIPT_OPTS, '-e', + 'renv::install(commandArgs(trailingOnly = TRUE))', + *additional_dependencies, + cwd=env_dir, + ) def run_hook( diff --git a/pre_commit/resources/empty_template_LICENSE.renv b/pre_commit/resources/empty_template_LICENSE.renv new file mode 100644 index 0000000..253c5d1 --- /dev/null +++ b/pre_commit/resources/empty_template_LICENSE.renv @@ -0,0 +1,7 @@ +Copyright 2021 RStudio, PBC + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/pre_commit/resources/empty_template_Makefile.PL b/pre_commit/resources/empty_template_Makefile.PL index ac75fe5..45a0ba3 100644 --- a/pre_commit/resources/empty_template_Makefile.PL +++ b/pre_commit/resources/empty_template_Makefile.PL @@ -1,6 +1,6 @@ use ExtUtils::MakeMaker; WriteMakefile( - NAME => "PreCommitDummy", + NAME => "PreCommitPlaceholder", VERSION => "0.0.1", ); diff --git a/pre_commit/resources/empty_template_activate.R b/pre_commit/resources/empty_template_activate.R new file mode 100644 index 0000000..d8d092c --- /dev/null +++ b/pre_commit/resources/empty_template_activate.R @@ -0,0 +1,440 @@ + +local({ + + # the requested version of renv + version <- "0.12.5" + + # the project directory + project <- getwd() + + # avoid recursion + if (!is.na(Sys.getenv("RENV_R_INITIALIZING", unset = NA))) + return(invisible(TRUE)) + + # signal that we're loading renv during R startup + Sys.setenv("RENV_R_INITIALIZING" = "true") + on.exit(Sys.unsetenv("RENV_R_INITIALIZING"), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # check to see if renv has already been loaded + if ("renv" %in% loadedNamespaces()) { + + # if renv has already been loaded, and it's the requested version of renv, + # nothing to do + spec <- .getNamespaceInfo(.getNamespace("renv"), "spec") + if (identical(spec[["version"]], version)) + return(invisible(TRUE)) + + # otherwise, unload and attempt to load the correct version of renv + unloadNamespace("renv") + + } + + # load bootstrap tools + bootstrap <- function(version, library) { + + # attempt to download renv + tarball <- tryCatch(renv_bootstrap_download(version), error = identity) + if (inherits(tarball, "error")) + stop("failed to download renv ", version) + + # now attempt to install + status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) + if (inherits(status, "error")) + stop("failed to install renv ", version) + + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) + return(repos) + + # if we're testing, re-use the test repositories + if (renv_bootstrap_tests_running()) + return(getOption("renv.tests.repos")) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" + + # add in renv.bootstrap.repos if set + default <- c(CRAN = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_download <- function(version) { + + # if the renv version number has 4 components, assume it must + # be retrieved via github + nv <- numeric_version(version) + components <- unclass(nv)[[1]] + + methods <- if (length(components) == 4L) { + list( + renv_bootstrap_download_github + ) + } else { + list( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive + ) + } + + for (method in methods) { + path <- tryCatch(method(version), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("failed to download renv ", version) + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + utils::download.file( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + repos <- renv_bootstrap_download_cran_latest_find(version) + + message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) + + info <- tryCatch( + utils::download.packages( + pkgs = "renv", + repos = repos, + destdir = tempdir(), + quiet = TRUE + ), + condition = identity + ) + + if (inherits(info, "condition")) { + message("FAILED") + return(FALSE) + } + + message("OK") + info[1, 2] + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + all <- renv_bootstrap_repos() + + for (repos in all) { + + db <- tryCatch( + as.data.frame( + x = utils::available.packages(repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + return(repos) + + } + + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + message("* Downloading renv ", version, " from CRAN archive ... ", appendLF = FALSE) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) { + message("OK") + return(destfile) + } + + } + + message("FAILED") + return(FALSE) + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) { + message("FAILED") + return(FALSE) + } + + message("OK") + return(destfile) + + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + message("* Installing renv ", version, " ... ", appendLF = FALSE) + dir.create(library, showWarnings = FALSE, recursive = TRUE) + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + r <- file.path(bin, exe) + args <- c("--vanilla", "CMD", "INSTALL", "-l", shQuote(library), shQuote(tarball)) + output <- system2(r, args, stdout = TRUE, stderr = TRUE) + message("Done!") + + # check for successful install + status <- attr(output, "status") + if (is.numeric(status) && !identical(status, 0L)) { + header <- "Error installing renv:" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- c(header, lines, output) + writeLines(text, con = stderr()) + } + + status + + } + + renv_bootstrap_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- Sys.getenv("RENV_PATHS_PREFIX") + if (nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(path) + + path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(path)) { + name <- renv_bootstrap_library_root_name(project) + return(file.path(path, name)) + } + + file.path(project, "renv/library") + + } + + renv_bootstrap_validate_version <- function(version) { + + loadedversion <- utils::packageDescription("renv", fields = "Version") + if (version == loadedversion) + return(TRUE) + + # assume four-component versions are from GitHub; three-component + # versions are from CRAN + components <- strsplit(loadedversion, "[.-]")[[1]] + remote <- if (length(components) == 4L) + paste("rstudio/renv", loadedversion, sep = "@") + else + paste("renv", loadedversion, sep = "@") + + fmt <- paste( + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + + msg <- sprintf(fmt, loadedversion, version, remote) + warning(msg, call. = FALSE) + + FALSE + + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # load the project + renv::load(project) + + TRUE + + } + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # attempt to load + if (renv_bootstrap_load(project, libpath, version)) + return(TRUE) + + # load failed; inform user we're about to bootstrap + prefix <- paste("# Bootstrapping renv", version) + postfix <- paste(rep.int("-", 77L - nchar(prefix)), collapse = "") + header <- paste(prefix, postfix) + message(header) + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + message("* Successfully installed and loaded renv ", version, ".") + return(renv::load()) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + +}) diff --git a/pre_commit/resources/empty_template_go.mod b/pre_commit/resources/empty_template_go.mod index de3e241..892c4e5 100644 --- a/pre_commit/resources/empty_template_go.mod +++ b/pre_commit/resources/empty_template_go.mod @@ -1 +1 @@ -module pre-commit-dummy-empty-module +module pre-commit-placeholder-empty-module diff --git a/pre_commit/resources/empty_template_package.json b/pre_commit/resources/empty_template_package.json index ac7b725..042e958 100644 --- a/pre_commit/resources/empty_template_package.json +++ b/pre_commit/resources/empty_template_package.json @@ -1,4 +1,4 @@ { - "name": "pre_commit_dummy_package", + "name": "pre_commit_placeholder_package", "version": "0.0.0" } diff --git a/pre_commit/resources/empty_template_pre_commit_dummy_package.gemspec b/pre_commit/resources/empty_template_pre_commit_dummy_package.gemspec deleted file mode 100644 index 8bfb40c..0000000 --- a/pre_commit/resources/empty_template_pre_commit_dummy_package.gemspec +++ /dev/null @@ -1,6 +0,0 @@ -Gem::Specification.new do |s| - s.name = 'pre_commit_dummy_package' - s.version = '0.0.0' - s.summary = 'dummy gem for pre-commit hooks' - s.authors = ['Anthony Sottile'] -end diff --git a/pre_commit/resources/empty_template_pre_commit_placeholder_package.gemspec b/pre_commit/resources/empty_template_pre_commit_placeholder_package.gemspec new file mode 100644 index 0000000..630f0d4 --- /dev/null +++ b/pre_commit/resources/empty_template_pre_commit_placeholder_package.gemspec @@ -0,0 +1,6 @@ +Gem::Specification.new do |s| + s.name = 'pre_commit_placeholder_package' + s.version = '0.0.0' + s.summary = 'placeholder gem for pre-commit hooks' + s.authors = ['Anthony Sottile'] +end diff --git a/pre_commit/resources/empty_template_setup.py b/pre_commit/resources/empty_template_setup.py index 6886064..ef05eef 100644 --- a/pre_commit/resources/empty_template_setup.py +++ b/pre_commit/resources/empty_template_setup.py @@ -1,4 +1,4 @@ from setuptools import setup -setup(name='pre-commit-dummy-package', version='0.0.0') +setup(name='pre-commit-placeholder-package', version='0.0.0') diff --git a/pre_commit/resources/rbenv.tar.gz b/pre_commit/resources/rbenv.tar.gz index 95b5a364dff06d5fc8f1176a9ee477c817942b46..98b7e0f60d5437171a82991b983ac52455a328a7 100644 GIT binary patch literal 32678 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 AGXMYp diff --git a/pre_commit/resources/ruby-build.tar.gz b/pre_commit/resources/ruby-build.tar.gz index ef82e2f5f53d7b35b4712e30388dff47391b8143..afec5dbe5eab69fc879523b3a4ad4468f0a62c6a 100644 GIT binary patch literal 68689 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 bIBt_ZJ@3s)LTG2z`Ty+9&mC15GPoH4$&&|1 literal 74218 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

?{!SmN`Jv=Jq=lu9 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 literal 5533 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 diff --git a/pre_commit/store.py b/pre_commit/store.py index 187c9d3..0fd5e62 100644 --- a/pre_commit/store.py +++ b/pre_commit/store.py @@ -188,15 +188,20 @@ class Store: LOCAL_RESOURCES = ( 'Cargo.toml', 'main.go', 'go.mod', 'main.rs', '.npmignore', - 'package.json', 'pre_commit_dummy_package.gemspec', 'setup.py', - 'environment.yml', 'Makefile.PL', 'renv.lock', + 'package.json', 'pre_commit_placeholder_package.gemspec', 'setup.py', + 'environment.yml', 'Makefile.PL', + 'renv.lock', 'renv/activate.R', 'renv/LICENSE.renv', ) def make_local(self, deps: Sequence[str]) -> str: def make_local_strategy(directory: str) -> None: for resource in self.LOCAL_RESOURCES: - contents = resource_text(f'empty_template_{resource}') - with open(os.path.join(directory, resource), 'w') as f: + resource_dirname, resource_basename = os.path.split(resource) + contents = resource_text(f'empty_template_{resource_basename}') + target_dir = os.path.join(directory, resource_dirname) + target_file = os.path.join(target_dir, resource_basename) + os.makedirs(target_dir, exist_ok=True) + with open(target_file, 'w') as f: f.write(contents) env = git.no_git_env() diff --git a/setup.cfg b/setup.cfg index 4002998..ae5cc7c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = pre_commit -version = 2.12.1 +version = 2.13.0 description = A framework for managing and maintaining multi-language pre-commit hooks. long_description = file: README.md long_description_content_type = text/markdown diff --git a/testing/make-archives b/testing/make-archives index b2b288c..cb0b0a4 100755 --- a/testing/make-archives +++ b/testing/make-archives @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import argparse +import gzip import os.path import shutil import subprocess @@ -14,25 +15,24 @@ from typing import Sequence REPOS = ( - ('rbenv', 'git://github.com/rbenv/rbenv', '0843745'), - ('ruby-build', 'git://github.com/rbenv/ruby-build', '500863c'), + ('rbenv', 'https://github.com/rbenv/rbenv', '585ed84'), + ('ruby-build', 'https://github.com/rbenv/ruby-build', 'e9fa4bf'), ( 'ruby-download', - 'git://github.com/garnieretienne/rvm-download', + 'https://github.com/garnieretienne/rvm-download', '09bd7c6', ), ) -def make_archive(name: str, repo: str, ref: str, destdir: str) -> str: - """Makes an archive of a repository in the given destdir. +def reset(tarinfo: tarfile.TarInfo) -> tarfile.TarInfo: + tarinfo.uid = tarinfo.gid = 0 + tarinfo.uname = tarinfo.gname = 'root' + tarinfo.mtime = 0 + return tarinfo - :param text name: Name to give the archive. For instance foo. The file - that is created will be called foo.tar.gz. - :param text repo: Repository to clone. - :param text ref: Tag/SHA/branch to check out. - :param text destdir: Directory to place archives in. - """ + +def make_archive(name: str, repo: str, ref: str, destdir: str) -> str: output_path = os.path.join(destdir, f'{name}.tar.gz') with tempfile.TemporaryDirectory() as tmpdir: # this ensures that the root directory has umask permissions @@ -47,8 +47,24 @@ def make_archive(name: str, repo: str, ref: str, destdir: str) -> str: # runtime shutil.rmtree(os.path.join(gitdir, '.git')) - with tarfile.open(output_path, 'w|gz') as tf: - tf.add(gitdir, name) + arcs = [(name, gitdir)] + for root, dirs, filenames in os.walk(gitdir): + for filename in dirs + filenames: + abspath = os.path.abspath(os.path.join(root, filename)) + relpath = os.path.relpath(abspath, gitdir) + arcs.append((os.path.join(name, relpath), abspath)) + arcs.sort() + + with gzip.GzipFile(output_path, 'wb', mtime=0) as gzipf: + # https://github.com/python/typeshed/issues/5491 + with tarfile.open(fileobj=gzipf, mode='w') as tf: # type: ignore + for arcname, abspath in arcs: + tf.add( + abspath, + arcname=arcname, + recursive=False, + filter=reset, + ) return output_path diff --git a/testing/resources/r_hooks_repo/renv/LICENSE b/testing/resources/r_hooks_repo/renv/LICENSE new file mode 100644 index 0000000..253c5d1 --- /dev/null +++ b/testing/resources/r_hooks_repo/renv/LICENSE @@ -0,0 +1,7 @@ +Copyright 2021 RStudio, PBC + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/testing/resources/r_hooks_repo/renv/activate.R b/testing/resources/r_hooks_repo/renv/activate.R new file mode 100644 index 0000000..d8d092c --- /dev/null +++ b/testing/resources/r_hooks_repo/renv/activate.R @@ -0,0 +1,440 @@ + +local({ + + # the requested version of renv + version <- "0.12.5" + + # the project directory + project <- getwd() + + # avoid recursion + if (!is.na(Sys.getenv("RENV_R_INITIALIZING", unset = NA))) + return(invisible(TRUE)) + + # signal that we're loading renv during R startup + Sys.setenv("RENV_R_INITIALIZING" = "true") + on.exit(Sys.unsetenv("RENV_R_INITIALIZING"), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # check to see if renv has already been loaded + if ("renv" %in% loadedNamespaces()) { + + # if renv has already been loaded, and it's the requested version of renv, + # nothing to do + spec <- .getNamespaceInfo(.getNamespace("renv"), "spec") + if (identical(spec[["version"]], version)) + return(invisible(TRUE)) + + # otherwise, unload and attempt to load the correct version of renv + unloadNamespace("renv") + + } + + # load bootstrap tools + bootstrap <- function(version, library) { + + # attempt to download renv + tarball <- tryCatch(renv_bootstrap_download(version), error = identity) + if (inherits(tarball, "error")) + stop("failed to download renv ", version) + + # now attempt to install + status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) + if (inherits(status, "error")) + stop("failed to install renv ", version) + + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) + return(repos) + + # if we're testing, re-use the test repositories + if (renv_bootstrap_tests_running()) + return(getOption("renv.tests.repos")) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" + + # add in renv.bootstrap.repos if set + default <- c(CRAN = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_download <- function(version) { + + # if the renv version number has 4 components, assume it must + # be retrieved via github + nv <- numeric_version(version) + components <- unclass(nv)[[1]] + + methods <- if (length(components) == 4L) { + list( + renv_bootstrap_download_github + ) + } else { + list( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive + ) + } + + for (method in methods) { + path <- tryCatch(method(version), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("failed to download renv ", version) + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + utils::download.file( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + repos <- renv_bootstrap_download_cran_latest_find(version) + + message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) + + info <- tryCatch( + utils::download.packages( + pkgs = "renv", + repos = repos, + destdir = tempdir(), + quiet = TRUE + ), + condition = identity + ) + + if (inherits(info, "condition")) { + message("FAILED") + return(FALSE) + } + + message("OK") + info[1, 2] + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + all <- renv_bootstrap_repos() + + for (repos in all) { + + db <- tryCatch( + as.data.frame( + x = utils::available.packages(repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + return(repos) + + } + + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + message("* Downloading renv ", version, " from CRAN archive ... ", appendLF = FALSE) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) { + message("OK") + return(destfile) + } + + } + + message("FAILED") + return(FALSE) + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) { + message("FAILED") + return(FALSE) + } + + message("OK") + return(destfile) + + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + message("* Installing renv ", version, " ... ", appendLF = FALSE) + dir.create(library, showWarnings = FALSE, recursive = TRUE) + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + r <- file.path(bin, exe) + args <- c("--vanilla", "CMD", "INSTALL", "-l", shQuote(library), shQuote(tarball)) + output <- system2(r, args, stdout = TRUE, stderr = TRUE) + message("Done!") + + # check for successful install + status <- attr(output, "status") + if (is.numeric(status) && !identical(status, 0L)) { + header <- "Error installing renv:" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- c(header, lines, output) + writeLines(text, con = stderr()) + } + + status + + } + + renv_bootstrap_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- Sys.getenv("RENV_PATHS_PREFIX") + if (nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(path) + + path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(path)) { + name <- renv_bootstrap_library_root_name(project) + return(file.path(path, name)) + } + + file.path(project, "renv/library") + + } + + renv_bootstrap_validate_version <- function(version) { + + loadedversion <- utils::packageDescription("renv", fields = "Version") + if (version == loadedversion) + return(TRUE) + + # assume four-component versions are from GitHub; three-component + # versions are from CRAN + components <- strsplit(loadedversion, "[.-]")[[1]] + remote <- if (length(components) == 4L) + paste("rstudio/renv", loadedversion, sep = "@") + else + paste("renv", loadedversion, sep = "@") + + fmt <- paste( + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + + msg <- sprintf(fmt, loadedversion, version, remote) + warning(msg, call. = FALSE) + + FALSE + + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # load the project + renv::load(project) + + TRUE + + } + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # attempt to load + if (renv_bootstrap_load(project, libpath, version)) + return(TRUE) + + # load failed; inform user we're about to bootstrap + prefix <- paste("# Bootstrapping renv", version) + postfix <- paste(rep.int("-", 77L - nchar(prefix)), collapse = "") + header <- paste(prefix, postfix) + message(header) + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + message("* Successfully installed and loaded renv ", version, ".") + return(renv::load()) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + +}) diff --git a/tests/commands/run_test.py b/tests/commands/run_test.py index 4cd70fd..e184340 100644 --- a/tests/commands/run_test.py +++ b/tests/commands/run_test.py @@ -526,9 +526,9 @@ def test_merge_conflict(cap_out, store, in_merge_conflict): def test_merge_conflict_modified(cap_out, store, in_merge_conflict): # Touch another file so we have unstaged non-conflicting things - assert os.path.exists('dummy') - with open('dummy', 'w') as dummy_file: - dummy_file.write('bar\nbaz\n') + assert os.path.exists('placeholder') + with open('placeholder', 'w') as placeholder_file: + placeholder_file.write('bar\nbaz\n') ret, printed = _do_run(cap_out, store, in_merge_conflict, run_opts()) assert ret == 1 @@ -600,6 +600,29 @@ def test_skip_aliased_hook(cap_out, store, aliased_repo): assert printed.count(msg) == 1 +def test_skip_bypasses_installation(cap_out, store, repo_with_passing_hook): + config = { + 'repo': 'local', + 'hooks': [ + { + 'id': 'skipme', + 'name': 'skipme', + 'entry': 'skipme', + 'language': 'python', + 'additional_dependencies': ['/pre-commit-does-not-exist'], + }, + ], + } + add_config_to_repo(repo_with_passing_hook, config) + + ret, printed = _do_run( + cap_out, store, repo_with_passing_hook, + run_opts(all_files=True), + {'SKIP': 'skipme'}, + ) + assert ret == 0 + + def test_hook_id_not_in_non_verbose_output( cap_out, store, repo_with_passing_hook, ): @@ -808,9 +831,9 @@ def test_local_hook_passes(cap_out, store, repo_with_passing_hook): } add_config_to_repo(repo_with_passing_hook, config) - with open('dummy.py', 'w') as staged_file: + with open('placeholder.py', 'w') as staged_file: staged_file.write('"""TODO: something"""\n') - cmd_output('git', 'add', 'dummy.py') + cmd_output('git', 'add', 'placeholder.py') _test_run( cap_out, @@ -835,9 +858,9 @@ def test_local_hook_fails(cap_out, store, repo_with_passing_hook): } add_config_to_repo(repo_with_passing_hook, config) - with open('dummy.py', 'w') as staged_file: + with open('placeholder.py', 'w') as staged_file: staged_file.write('"""TODO: something"""\n') - cmd_output('git', 'add', 'dummy.py') + cmd_output('git', 'add', 'placeholder.py') _test_run( cap_out, diff --git a/tests/conftest.py b/tests/conftest.py index b36ce5a..f38f969 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -90,8 +90,8 @@ def _make_conflict(): @pytest.fixture def in_merge_conflict(tempdir_factory): path = make_consuming_repo(tempdir_factory, 'script_hooks_repo') - open(os.path.join(path, 'dummy'), 'a').close() - cmd_output('git', 'add', 'dummy', cwd=path) + open(os.path.join(path, 'placeholder'), 'a').close() + cmd_output('git', 'add', 'placeholder', cwd=path) git_commit(msg=in_merge_conflict.__name__, cwd=path) conflict_path = tempdir_factory.get() diff --git a/tests/languages/docker_test.py b/tests/languages/docker_test.py index 3bed4bf..01b5e27 100644 --- a/tests/languages/docker_test.py +++ b/tests/languages/docker_test.py @@ -1,14 +1,155 @@ +import builtins +import json +import ntpath +import os.path +import posixpath from unittest import mock +import pytest + from pre_commit.languages import docker def test_docker_fallback_user(): def invalid_attribute(): raise AttributeError + with mock.patch.multiple( - 'os', create=True, - getuid=invalid_attribute, - getgid=invalid_attribute, + 'os', create=True, + getuid=invalid_attribute, + getgid=invalid_attribute, ): assert docker.get_docker_user() == () + + +def test_in_docker_no_file(): + with mock.patch.object(builtins, 'open', side_effect=FileNotFoundError): + assert docker._is_in_docker() is False + + +def _mock_open(data): + return mock.patch.object( + builtins, + 'open', + new_callable=mock.mock_open, + read_data=data, + ) + + +def test_in_docker_docker_in_file(): + docker_cgroup_example = b'''\ +12:hugetlb:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +11:blkio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +10:freezer:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +9:cpu,cpuacct:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +8:pids:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +7:rdma:/ +6:net_cls,net_prio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +5:cpuset:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +4:devices:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +3:memory:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +2:perf_event:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +1:name=systemd:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7 +0::/system.slice/containerd.service +''' # noqa: E501 + with _mock_open(docker_cgroup_example): + assert docker._is_in_docker() is True + + +def test_in_docker_docker_not_in_file(): + non_docker_cgroup_example = b'''\ +12:perf_event:/ +11:hugetlb:/ +10:devices:/ +9:blkio:/ +8:rdma:/ +7:cpuset:/ +6:cpu,cpuacct:/ +5:freezer:/ +4:memory:/ +3:pids:/ +2:net_cls,net_prio:/ +1:name=systemd:/init.scope +0::/init.scope +''' + with _mock_open(non_docker_cgroup_example): + assert docker._is_in_docker() is False + + +def test_get_docker_path_not_in_docker_returns_same(): + with mock.patch.object(docker, '_is_in_docker', return_value=False): + assert docker._get_docker_path('abc') == 'abc' + + +@pytest.fixture +def in_docker(): + with mock.patch.object(docker, '_is_in_docker', return_value=True): + yield + + +def _linux_commonpath(): + return mock.patch.object(os.path, 'commonpath', posixpath.commonpath) + + +def _nt_commonpath(): + return mock.patch.object(os.path, 'commonpath', ntpath.commonpath) + + +def _docker_output(out): + ret = (0, out, b'') + return mock.patch.object(docker, 'cmd_output_b', return_value=ret) + + +def test_get_docker_path_in_docker_no_binds_same_path(in_docker): + docker_out = json.dumps([{'Mounts': []}]).encode() + + with _docker_output(docker_out): + assert docker._get_docker_path('abc') == 'abc' + + +def test_get_docker_path_in_docker_binds_path_equal(in_docker): + binds_list = [{'Source': '/opt/my_code', 'Destination': '/project'}] + docker_out = json.dumps([{'Mounts': binds_list}]).encode() + + with _linux_commonpath(), _docker_output(docker_out): + assert docker._get_docker_path('/project') == '/opt/my_code' + + +def test_get_docker_path_in_docker_binds_path_complex(in_docker): + binds_list = [{'Source': '/opt/my_code', 'Destination': '/project'}] + docker_out = json.dumps([{'Mounts': binds_list}]).encode() + + with _linux_commonpath(), _docker_output(docker_out): + path = '/project/test/something' + assert docker._get_docker_path(path) == '/opt/my_code/test/something' + + +def test_get_docker_path_in_docker_no_substring(in_docker): + binds_list = [{'Source': '/opt/my_code', 'Destination': '/project'}] + docker_out = json.dumps([{'Mounts': binds_list}]).encode() + + with _linux_commonpath(), _docker_output(docker_out): + path = '/projectSuffix/test/something' + assert docker._get_docker_path(path) == path + + +def test_get_docker_path_in_docker_binds_path_many_binds(in_docker): + binds_list = [ + {'Source': '/something_random', 'Destination': '/not-related'}, + {'Source': '/opt/my_code', 'Destination': '/project'}, + {'Source': '/something-random-2', 'Destination': '/not-related-2'}, + ] + docker_out = json.dumps([{'Mounts': binds_list}]).encode() + + with _linux_commonpath(), _docker_output(docker_out): + assert docker._get_docker_path('/project') == '/opt/my_code' + + +def test_get_docker_path_in_docker_windows(in_docker): + binds_list = [{'Source': r'c:\users\user', 'Destination': r'c:\folder'}] + docker_out = json.dumps([{'Mounts': binds_list}]).encode() + + with _nt_commonpath(), _docker_output(docker_out): + path = r'c:\folder\test\something' + expected = r'c:\users\user\test\something' + assert docker._get_docker_path(path) == expected diff --git a/tests/languages/r_test.py b/tests/languages/r_test.py index 5c046ef..66aa7b3 100644 --- a/tests/languages/r_test.py +++ b/tests/languages/r_test.py @@ -14,10 +14,12 @@ def _test_r_parsing( hook_id, expected_hook_expr={}, expected_args={}, + config={}, + expect_path_prefix=True, ): repo_path = 'r_hooks_repo' path = make_repo(tempdir_factory, repo_path) - config = make_config_from_repo(path) + config = config or make_config_from_repo(path) hook = _get_hook_no_install(config, store, hook_id) ret = r._cmd_from_hook(hook) expected_cmd = 'Rscript' @@ -25,7 +27,8 @@ def _test_r_parsing( '--no-save', '--no-restore', '--no-site-file', '--no-environ', ) expected_path = os.path.join( - hook.prefix.prefix_dir, '.'.join([hook_id, 'R']), + hook.prefix.prefix_dir if expect_path_prefix else '', + f'{hook_id}.R', ) expected = ( expected_cmd, @@ -102,3 +105,25 @@ def test_r_parsing_expr_non_Rscirpt(tempdir_factory, store): msg = execinfo.value.args assert msg == ('entry must start with `Rscript`.',) + + +def test_r_parsing_file_local(tempdir_factory, store): + path = 'path/to/script.R' + hook_id = 'local-r' + config = { + 'repo': 'local', + 'hooks': [{ + 'id': hook_id, + 'name': 'local-r', + 'entry': f'Rscript {path}', + 'language': 'r', + }], + } + _test_r_parsing( + tempdir_factory, + store, + hook_id=hook_id, + expected_hook_expr=(path,), + config=config, + expect_path_prefix=False, + ) diff --git a/tests/languages/ruby_test.py b/tests/languages/ruby_test.py index 0c6cfed..7dff046 100644 --- a/tests/languages/ruby_test.py +++ b/tests/languages/ruby_test.py @@ -36,13 +36,13 @@ def test_uses_system_if_both_gem_and_ruby_are_available(find_exe_mck): def fake_gem_prefix(tmpdir): gemspec = '''\ Gem::Specification.new do |s| - s.name = 'pre_commit_dummy_package' + s.name = 'pre_commit_placeholder_package' s.version = '0.0.0' - s.summary = 'dummy gem for pre-commit hooks' + s.summary = 'placeholder gem for pre-commit hooks' s.authors = ['Anthony Sottile'] end ''' - tmpdir.join('dummy_gem.gemspec').write(gemspec) + tmpdir.join('placeholder_gem.gemspec').write(gemspec) yield Prefix(tmpdir) @@ -53,7 +53,7 @@ def test_install_ruby_system(fake_gem_prefix): # Should be able to activate and use rbenv install with ruby.in_env(fake_gem_prefix, 'system'): _, out, _ = cmd_output('gem', 'list') - assert 'pre_commit_dummy_package' in out + assert 'pre_commit_placeholder_package' in out @xfailif_windows # pragma: win32 no cover diff --git a/tests/store_test.py b/tests/store_test.py index 0947144..5a5d69e 100644 --- a/tests/store_test.py +++ b/tests/store_test.py @@ -186,7 +186,7 @@ def test_local_resources_reflects_reality(): for res in os.listdir('pre_commit/resources') if res.startswith('empty_template_') } - assert on_disk == set(Store.LOCAL_RESOURCES) + assert on_disk == {os.path.basename(x) for x in Store.LOCAL_RESOURCES} def test_mark_config_as_used(store, tmpdir):