diff --git a/pre_commit/meta_hooks/check_hooks_apply.py b/pre_commit/meta_hooks/check_hooks_apply.py index 8c9a92d8..20d7f069 100644 --- a/pre_commit/meta_hooks/check_hooks_apply.py +++ b/pre_commit/meta_hooks/check_hooks_apply.py @@ -14,6 +14,8 @@ def check_all_hooks_match_files(config_file): for repo in runner.repositories: for hook_id, hook in repo.hooks: + if hook['always_run']: + continue include, exclude = hook['files'], hook['exclude'] filtered = _filter_by_include_exclude(files, include, exclude) types, exclude_types = hook['types'], hook['exclude_types'] diff --git a/tests/meta_hooks/check_hooks_apply_test.py b/tests/meta_hooks/check_hooks_apply_test.py index 0ca68802..86bc598d 100644 --- a/tests/meta_hooks/check_hooks_apply_test.py +++ b/tests/meta_hooks/check_hooks_apply_test.py @@ -116,6 +116,12 @@ def test_valid_includes( OrderedDict(( ('id', 'check-useless-excludes'), )), + # Should not be reported as an error due to always_run + OrderedDict(( + ('id', 'check-useless-excludes'), + ('files', '^$'), + ('always_run', True), + )), ), ), ))