Make Go a first class language

This commit is contained in:
taoufik07 2023-01-03 01:48:43 +01:00 committed by Anthony Sottile
parent ceb429b253
commit 9afd63948e
4 changed files with 181 additions and 13 deletions

View file

@ -0,0 +1,43 @@
from __future__ import annotations
import re
from unittest import mock
import pytest
import pre_commit.constants as C
from pre_commit.languages import golang
from pre_commit.languages import helpers
ACTUAL_GET_DEFAULT_VERSION = golang.get_default_version.__wrapped__
@pytest.fixture
def exe_exists_mck():
with mock.patch.object(helpers, 'exe_exists') as mck:
yield mck
def test_golang_default_version_system_available(exe_exists_mck):
exe_exists_mck.return_value = True
assert ACTUAL_GET_DEFAULT_VERSION() == 'system'
def test_golang_default_version_system_not_available(exe_exists_mck):
exe_exists_mck.return_value = False
assert ACTUAL_GET_DEFAULT_VERSION() == C.DEFAULT
ACTUAL_INFER_GO_VERSION = golang._infer_go_version.__wrapped__
def test_golang_infer_go_version_not_default():
assert ACTUAL_INFER_GO_VERSION('1.19.4') == '1.19.4'
def test_golang_infer_go_version_default():
version = ACTUAL_INFER_GO_VERSION(C.DEFAULT)
assert version != C.DEFAULT
assert re.match(r'^\d+\.\d+\.\d+$', version)

View file

@ -380,17 +380,36 @@ def test_swift_hook(tempdir_factory, store):
)
def test_golang_hook(tempdir_factory, store):
def test_golang_system_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'golang_hooks_repo',
'golang-hook', [], b'hello world\n',
'golang-hook', ['system'], b'hello world from system\n',
config_kwargs={
'hooks': [{
'id': 'golang-hook',
'language_version': 'system',
}],
},
)
def test_golang_versioned_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'golang_hooks_repo',
'golang-hook', [], b'hello world from go1.18.4\n',
config_kwargs={
'hooks': [{
'id': 'golang-hook',
'language_version': '1.18.4',
}],
},
)
def test_golang_hook_still_works_when_gobin_is_set(tempdir_factory, store):
gobin_dir = tempdir_factory.get()
with envcontext((('GOBIN', gobin_dir),)):
test_golang_hook(tempdir_factory, store)
test_golang_system_hook(tempdir_factory, store)
assert os.listdir(gobin_dir) == []
@ -677,7 +696,7 @@ def test_additional_golang_dependencies_installed(
envdir = helpers.environment_dir(
hook.prefix,
golang.ENVIRONMENT_DIR,
C.DEFAULT,
golang.get_default_version(),
)
binaries = os.listdir(os.path.join(envdir, 'bin'))
# normalize for windows