diff --git a/pre_commit/languages/golang.py b/pre_commit/languages/golang.py index 9f2b106d..f81b81ec 100644 --- a/pre_commit/languages/golang.py +++ b/pre_commit/languages/golang.py @@ -49,7 +49,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 +64,8 @@ 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) def run_hook(repo_cmd_runner, hook, file_args): diff --git a/tests/repository_test.py b/tests/repository_test.py index 9830c58b..27da7a36 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -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 + config['hooks'][0]['additional_dependencies'] = ['github.com/firba1/tpol'] + repo = Repository.create(config, store) + repo.require_installed() + with golang.in_env(repo.cmd_runner): + gopath = repo.cmd_runner.path(helpers.environment_dir( + golang.ENVIRONMENT_DIR, 'default', + )) + env = dict(os.environ, GOPATH=gopath) + output = cmd_output('go', 'list', '...', env=env)[1] + assert 'github.com/firba1/tpol' in output + + def test_reinstall(tempdir_factory, store, log_info_mock): path = make_repo(tempdir_factory, 'python_hooks_repo') config = make_config_from_repo(path)