mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
test pygrep inline
This commit is contained in:
parent
f5ec578647
commit
a2373d0a81
2 changed files with 17 additions and 46 deletions
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from pre_commit.languages import pygrep
|
from pre_commit.languages import pygrep
|
||||||
|
from testing.language_helpers import run_language
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
@ -13,6 +14,9 @@ def some_files(tmpdir):
|
||||||
tmpdir.join('f4').write_binary(b'foo\npattern\nbar\n')
|
tmpdir.join('f4').write_binary(b'foo\npattern\nbar\n')
|
||||||
tmpdir.join('f5').write_binary(b'[INFO] hi\npattern\nbar')
|
tmpdir.join('f5').write_binary(b'[INFO] hi\npattern\nbar')
|
||||||
tmpdir.join('f6').write_binary(b"pattern\nbarwith'foo\n")
|
tmpdir.join('f6').write_binary(b"pattern\nbarwith'foo\n")
|
||||||
|
tmpdir.join('f7').write_binary(b"hello'hi\nworld\n")
|
||||||
|
tmpdir.join('f8').write_binary(b'foo\nbar\nbaz\n')
|
||||||
|
tmpdir.join('f9').write_binary(b'[WARN] hi\n')
|
||||||
with tmpdir.as_cwd():
|
with tmpdir.as_cwd():
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -125,3 +129,16 @@ def test_multiline_multiline_flag_is_enabled(cap_out):
|
||||||
out = cap_out.get()
|
out = cap_out.get()
|
||||||
assert ret == 1
|
assert ret == 1
|
||||||
assert out == 'f1:1:foo\nbar\n'
|
assert out == 'f1:1:foo\nbar\n'
|
||||||
|
|
||||||
|
|
||||||
|
def test_grep_hook_matching(some_files, tmp_path):
|
||||||
|
ret = run_language(
|
||||||
|
tmp_path, pygrep, 'ello', file_args=('f7', 'f8', 'f9'),
|
||||||
|
)
|
||||||
|
assert ret == (1, b"f7:1:hello'hi\n")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('regex', ('nope', "foo'bar", r'^\[INFO\]'))
|
||||||
|
def test_grep_hook_not_matching(regex, some_files, tmp_path):
|
||||||
|
ret = run_language(tmp_path, pygrep, regex, file_args=('f7', 'f8', 'f9'))
|
||||||
|
assert ret == (0, b'')
|
||||||
|
|
|
||||||
|
|
@ -226,52 +226,6 @@ def test_output_isatty(tempdir_factory, store):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _make_grep_repo(entry, store, args=()):
|
|
||||||
config = {
|
|
||||||
'repo': 'local',
|
|
||||||
'hooks': [{
|
|
||||||
'id': 'grep-hook',
|
|
||||||
'name': 'grep-hook',
|
|
||||||
'language': 'pygrep',
|
|
||||||
'entry': entry,
|
|
||||||
'args': args,
|
|
||||||
'types': ['text'],
|
|
||||||
}],
|
|
||||||
}
|
|
||||||
return _get_hook(config, store, 'grep-hook')
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def greppable_files(tmpdir):
|
|
||||||
with tmpdir.as_cwd():
|
|
||||||
cmd_output_b('git', 'init', '.')
|
|
||||||
tmpdir.join('f1').write_binary(b"hello'hi\nworld\n")
|
|
||||||
tmpdir.join('f2').write_binary(b'foo\nbar\nbaz\n')
|
|
||||||
tmpdir.join('f3').write_binary(b'[WARN] hi\n')
|
|
||||||
yield tmpdir
|
|
||||||
|
|
||||||
|
|
||||||
def test_grep_hook_matching(greppable_files, store):
|
|
||||||
hook = _make_grep_repo('ello', store)
|
|
||||||
ret, out = _hook_run(hook, ('f1', 'f2', 'f3'), color=False)
|
|
||||||
assert ret == 1
|
|
||||||
assert _norm_out(out) == b"f1:1:hello'hi\n"
|
|
||||||
|
|
||||||
|
|
||||||
def test_grep_hook_case_insensitive(greppable_files, store):
|
|
||||||
hook = _make_grep_repo('ELLO', store, args=['-i'])
|
|
||||||
ret, out = _hook_run(hook, ('f1', 'f2', 'f3'), color=False)
|
|
||||||
assert ret == 1
|
|
||||||
assert _norm_out(out) == b"f1:1:hello'hi\n"
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('regex', ('nope', "foo'bar", r'^\[INFO\]'))
|
|
||||||
def test_grep_hook_not_matching(regex, greppable_files, store):
|
|
||||||
hook = _make_grep_repo(regex, store)
|
|
||||||
ret, out = _hook_run(hook, ('f1', 'f2', 'f3'), color=False)
|
|
||||||
assert (ret, out) == (0, b'')
|
|
||||||
|
|
||||||
|
|
||||||
def _norm_pwd(path):
|
def _norm_pwd(path):
|
||||||
# Under windows bash's temp and windows temp is different.
|
# Under windows bash's temp and windows temp is different.
|
||||||
# This normalizes to the bash /tmp
|
# This normalizes to the bash /tmp
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue