From d5dcebf6712aab0b14ec3b6967e5f203d7972eb2 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 13 Jan 2018 17:28:19 -0800 Subject: [PATCH] Deprecate the pcre language --- pre_commit/commands/run.py | 9 +++++++++ tests/commands/run_test.py | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/pre_commit/commands/run.py b/pre_commit/commands/run.py index c70eff01..a16d8fe1 100644 --- a/pre_commit/commands/run.py +++ b/pre_commit/commands/run.py @@ -67,6 +67,15 @@ def _run_single_hook(filenames, hook, repo, args, skips, cols): filenames = _filter_by_include_exclude(filenames, include, exclude) types, exclude_types = hook['types'], hook['exclude_types'] filenames = _filter_by_types(filenames, types, exclude_types) + + if hook['language'] == 'pcre': + logger.warning( + '`{}` (from {}) uses the deprecated pcre language.\n' + 'The pcre language is scheduled for removal in pre-commit 2.x.\n' + 'The pygrep language is a more portable (and usually drop-in) ' + 'replacement.'.format(hook['id'], repo.repo_config['repo']), + ) + if hook['id'] in skips: output.write(get_hook_message( _hook_msg_start(hook, args.verbose), diff --git a/tests/commands/run_test.py b/tests/commands/run_test.py index 97c82c25..cbf4e981 100644 --- a/tests/commands/run_test.py +++ b/tests/commands/run_test.py @@ -529,7 +529,7 @@ def test_push_hook(cap_out, repo_with_passing_hook, mock_out_store_directory): ('id', 'do_not_commit'), ('name', 'hook 2'), ('entry', 'DO NOT COMMIT'), - ('language', 'pcre'), + ('language', 'pygrep'), ('types', ['text']), ('stages', ['push']), )), @@ -592,7 +592,7 @@ def test_local_hook_passes( ('id', 'do_not_commit'), ('name', 'Block if "DO NOT COMMIT" is found'), ('entry', 'DO NOT COMMIT'), - ('language', 'pcre'), + ('language', 'pygrep'), ('files', '^(.*)$'), )), ), @@ -645,6 +645,35 @@ def test_local_hook_fails( ) +def test_pcre_deprecation_warning( + cap_out, repo_with_passing_hook, mock_out_store_directory, +): + config = OrderedDict(( + ('repo', 'local'), + ( + 'hooks', [OrderedDict(( + ('id', 'pcre-hook'), + ('name', 'pcre-hook'), + ('language', 'pcre'), + ('entry', '.'), + ))], + ), + )) + add_config_to_repo(repo_with_passing_hook, config) + + _test_run( + cap_out, + repo_with_passing_hook, + opts={}, + expected_outputs=[ + b'[WARNING] `pcre-hook` (from local) uses the deprecated ' + b'pcre language.', + ], + expected_ret=0, + stage=False, + ) + + def test_meta_hook_passes( cap_out, repo_with_passing_hook, mock_out_store_directory, ):