|
12 | 12 | import pytest |
13 | 13 |
|
14 | 14 | from pre_commit import five |
| 15 | +from pre_commit import parse_shebang |
15 | 16 | from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA |
16 | 17 | from pre_commit.clientlib.validate_config import validate_config_extra |
17 | 18 | from pre_commit.jsonschema_extensions import apply_defaults |
18 | 19 | from pre_commit.languages import helpers |
19 | 20 | from pre_commit.languages import node |
| 21 | +from pre_commit.languages import pcre |
20 | 22 | from pre_commit.languages import python |
21 | 23 | from pre_commit.languages import ruby |
22 | 24 | from pre_commit.repository import Repository |
@@ -187,6 +189,25 @@ def test_missing_executable(tempdir_factory, store): |
187 | 189 | ) |
188 | 190 |
|
189 | 191 |
|
| 192 | +@pytest.mark.integration |
| 193 | +def test_missing_pcre_support(tempdir_factory, store): |
| 194 | + orig_find_executable = parse_shebang.find_executable |
| 195 | + |
| 196 | + def no_grep(exe, **kwargs): |
| 197 | + if exe == pcre.GREP: |
| 198 | + return None |
| 199 | + else: |
| 200 | + return orig_find_executable(exe, **kwargs) |
| 201 | + |
| 202 | + with mock.patch.object(parse_shebang, 'find_executable', no_grep): |
| 203 | + _test_hook_repo( |
| 204 | + tempdir_factory, store, 'pcre_hooks_repo', |
| 205 | + 'regex-with-quotes', ['/dev/null'], |
| 206 | + 'Executable `{}` not found'.format(pcre.GREP).encode('UTF-8'), |
| 207 | + expected_return_code=1, |
| 208 | + ) |
| 209 | + |
| 210 | + |
190 | 211 | @pytest.mark.integration |
191 | 212 | def test_run_a_script_hook(tempdir_factory, store): |
192 | 213 | _test_hook_repo( |
|
0 commit comments