Merge pull request #475 from pre-commit/golang_improvements

additional_dependencies support for golang hooks
This commit is contained in:
Anthony Sottile 2017-01-25 20:45:49 -08:00 committed by GitHub
commit 209dc07b31
2 changed files with 26 additions and 1 deletions

View file

@ -9,6 +9,7 @@ from pre_commit.envcontext import Var
from pre_commit.languages import helpers
from pre_commit.util import clean_path_on_failure
from pre_commit.util import cmd_output
from pre_commit.util import rmtree
from pre_commit.xargs import xargs
@ -49,7 +50,6 @@ def install_environment(
additional_dependencies=(),
):
helpers.assert_version_default('golang', version)
helpers.assert_no_additional_deps('golang', additional_dependencies)
directory = repo_cmd_runner.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
)
@ -65,6 +65,11 @@ def install_environment(
env = dict(os.environ, GOPATH=directory)
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):

View file

@ -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 validate_config_extra
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 node
from pre_commit.languages import pcre
@ -542,6 +543,25 @@ def test_additional_node_dependencies_installed(
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):
path = make_repo(tempdir_factory, 'python_hooks_repo')
config = make_config_from_repo(path)