mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-19 09:04:41 +04:00
Merge pull request #475 from pre-commit/golang_improvements
additional_dependencies support for golang hooks
This commit is contained in:
commit
209dc07b31
2 changed files with 26 additions and 1 deletions
|
|
@ -9,6 +9,7 @@ from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
from pre_commit.languages import helpers
|
||||||
from pre_commit.util import clean_path_on_failure
|
from pre_commit.util import clean_path_on_failure
|
||||||
from pre_commit.util import cmd_output
|
from pre_commit.util import cmd_output
|
||||||
|
from pre_commit.util import rmtree
|
||||||
from pre_commit.xargs import xargs
|
from pre_commit.xargs import xargs
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -49,7 +50,6 @@ def install_environment(
|
||||||
additional_dependencies=(),
|
additional_dependencies=(),
|
||||||
):
|
):
|
||||||
helpers.assert_version_default('golang', version)
|
helpers.assert_version_default('golang', version)
|
||||||
helpers.assert_no_additional_deps('golang', additional_dependencies)
|
|
||||||
directory = repo_cmd_runner.path(
|
directory = repo_cmd_runner.path(
|
||||||
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
|
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
|
||||||
)
|
)
|
||||||
|
|
@ -65,6 +65,11 @@ def install_environment(
|
||||||
|
|
||||||
env = dict(os.environ, GOPATH=directory)
|
env = dict(os.environ, GOPATH=directory)
|
||||||
cmd_output('go', 'get', './...', cwd=repo_src_dir, env=env)
|
cmd_output('go', 'get', './...', cwd=repo_src_dir, env=env)
|
||||||
|
for dependency in additional_dependencies:
|
||||||
|
cmd_output('go', 'get', dependency, cwd=repo_src_dir, env=env)
|
||||||
|
# Same some disk space, we don't need these after installation
|
||||||
|
rmtree(repo_cmd_runner.path(directory, 'src'))
|
||||||
|
rmtree(repo_cmd_runner.path(directory, 'pkg'))
|
||||||
|
|
||||||
|
|
||||||
def run_hook(repo_cmd_runner, hook, file_args):
|
def run_hook(repo_cmd_runner, hook, file_args):
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ from pre_commit import parse_shebang
|
||||||
from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA
|
from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA
|
||||||
from pre_commit.clientlib.validate_config import validate_config_extra
|
from pre_commit.clientlib.validate_config import validate_config_extra
|
||||||
from pre_commit.jsonschema_extensions import apply_defaults
|
from pre_commit.jsonschema_extensions import apply_defaults
|
||||||
|
from pre_commit.languages import golang
|
||||||
from pre_commit.languages import helpers
|
from pre_commit.languages import helpers
|
||||||
from pre_commit.languages import node
|
from pre_commit.languages import node
|
||||||
from pre_commit.languages import pcre
|
from pre_commit.languages import pcre
|
||||||
|
|
@ -542,6 +543,25 @@ def test_additional_node_dependencies_installed(
|
||||||
assert 'lodash' in output
|
assert 'lodash' in output
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.integration
|
||||||
|
def test_additional_golang_dependencies_installed(
|
||||||
|
tempdir_factory, store,
|
||||||
|
):
|
||||||
|
path = make_repo(tempdir_factory, 'golang_hooks_repo')
|
||||||
|
config = make_config_from_repo(path)
|
||||||
|
# A small go package
|
||||||
|
deps = ['github.com/golang/example/hello']
|
||||||
|
config['hooks'][0]['additional_dependencies'] = deps
|
||||||
|
repo = Repository.create(config, store)
|
||||||
|
repo.require_installed()
|
||||||
|
binaries = os.listdir(repo.cmd_runner.path(
|
||||||
|
helpers.environment_dir(golang.ENVIRONMENT_DIR, 'default'), 'bin',
|
||||||
|
))
|
||||||
|
# normalize for windows
|
||||||
|
binaries = [os.path.splitext(binary)[0] for binary in binaries]
|
||||||
|
assert 'hello' in binaries
|
||||||
|
|
||||||
|
|
||||||
def test_reinstall(tempdir_factory, store, log_info_mock):
|
def test_reinstall(tempdir_factory, store, log_info_mock):
|
||||||
path = make_repo(tempdir_factory, 'python_hooks_repo')
|
path = make_repo(tempdir_factory, 'python_hooks_repo')
|
||||||
config = make_config_from_repo(path)
|
config = make_config_from_repo(path)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue