mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Make Go a first class language
This commit is contained in:
parent
ceb429b253
commit
9afd63948e
4 changed files with 181 additions and 13 deletions
43
tests/languages/golang_test.py
Normal file
43
tests/languages/golang_test.py
Normal 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)
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue