mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-18 16:44:42 +04:00
Add types to pre-commit
This commit is contained in:
parent
fa536a8693
commit
327ed924a3
62 changed files with 911 additions and 411 deletions
|
|
@ -1,23 +1,31 @@
|
|||
import functools
|
||||
import inspect
|
||||
from typing import Sequence
|
||||
from typing import Tuple
|
||||
|
||||
import pytest
|
||||
|
||||
from pre_commit.languages.all import all_languages
|
||||
from pre_commit.languages.all import languages
|
||||
from pre_commit.prefix import Prefix
|
||||
|
||||
|
||||
ArgSpec = functools.partial(
|
||||
inspect.FullArgSpec, varargs=None, varkw=None, defaults=None,
|
||||
kwonlyargs=[], kwonlydefaults=None, annotations={},
|
||||
)
|
||||
def _argspec(annotations):
|
||||
args = [k for k in annotations if k != 'return']
|
||||
return inspect.FullArgSpec(
|
||||
args=args, annotations=annotations,
|
||||
varargs=None, varkw=None, defaults=None,
|
||||
kwonlyargs=[], kwonlydefaults=None,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('language', all_languages)
|
||||
def test_install_environment_argspec(language):
|
||||
expected_argspec = ArgSpec(
|
||||
args=['prefix', 'version', 'additional_dependencies'],
|
||||
)
|
||||
expected_argspec = _argspec({
|
||||
'return': None,
|
||||
'prefix': Prefix,
|
||||
'version': str,
|
||||
'additional_dependencies': Sequence[str],
|
||||
})
|
||||
argspec = inspect.getfullargspec(languages[language].install_environment)
|
||||
assert argspec == expected_argspec
|
||||
|
||||
|
|
@ -29,20 +37,26 @@ def test_ENVIRONMENT_DIR(language):
|
|||
|
||||
@pytest.mark.parametrize('language', all_languages)
|
||||
def test_run_hook_argspec(language):
|
||||
expected_argspec = ArgSpec(args=['hook', 'file_args', 'color'])
|
||||
expected_argspec = _argspec({
|
||||
'return': Tuple[int, bytes],
|
||||
'hook': 'Hook', 'file_args': Sequence[str], 'color': bool,
|
||||
})
|
||||
argspec = inspect.getfullargspec(languages[language].run_hook)
|
||||
assert argspec == expected_argspec
|
||||
|
||||
|
||||
@pytest.mark.parametrize('language', all_languages)
|
||||
def test_get_default_version_argspec(language):
|
||||
expected_argspec = ArgSpec(args=[])
|
||||
expected_argspec = _argspec({'return': str})
|
||||
argspec = inspect.getfullargspec(languages[language].get_default_version)
|
||||
assert argspec == expected_argspec
|
||||
|
||||
|
||||
@pytest.mark.parametrize('language', all_languages)
|
||||
def test_healthy_argspec(language):
|
||||
expected_argspec = ArgSpec(args=['prefix', 'language_version'])
|
||||
expected_argspec = _argspec({
|
||||
'return': bool,
|
||||
'prefix': Prefix, 'language_version': str,
|
||||
})
|
||||
argspec = inspect.getfullargspec(languages[language].healthy)
|
||||
assert argspec == expected_argspec
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue