mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-14 13:00:10 -06:00
fix check-useless-excludes for exclude of broken symlink
This commit is contained in:
@@ -43,6 +43,9 @@ def check_useless_excludes(config_file: str) -> int:
|
||||
|
||||
for repo in config['repos']:
|
||||
for hook in repo['hooks']:
|
||||
# the default of manifest hooks is `types: [file]` but we may
|
||||
# be configuring a symlink hook while there's a broken symlink
|
||||
hook.setdefault('types', [])
|
||||
# Not actually a manifest dict, but this more accurately reflects
|
||||
# the defaults applied during runtime
|
||||
hook = apply_defaults(hook, MANIFEST_HOOK_DICT)
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
from pre_commit import git
|
||||
from pre_commit.meta_hooks import check_useless_excludes
|
||||
from pre_commit.util import cmd_output
|
||||
from testing.fixtures import add_config_to_repo
|
||||
from testing.fixtures import make_config_from_repo
|
||||
from testing.fixtures import make_repo
|
||||
from testing.util import xfailif_windows
|
||||
|
||||
|
||||
def test_useless_exclude_global(capsys, in_git_dir):
|
||||
@@ -113,3 +118,20 @@ def test_valid_exclude(capsys, in_git_dir):
|
||||
|
||||
out, _ = capsys.readouterr()
|
||||
assert out == ''
|
||||
|
||||
|
||||
@xfailif_windows # pragma: win32 no cover
|
||||
def test_useless_excludes_broken_symlink(capsys, in_git_dir, tempdir_factory):
|
||||
path = make_repo(tempdir_factory, 'script_hooks_repo')
|
||||
config = make_config_from_repo(path)
|
||||
config['hooks'][0]['exclude'] = 'broken-symlink'
|
||||
add_config_to_repo(in_git_dir.strpath, config)
|
||||
|
||||
in_git_dir.join('broken-symlink').mksymlinkto('DNE')
|
||||
cmd_output('git', 'add', 'broken-symlink')
|
||||
git.commit()
|
||||
|
||||
assert check_useless_excludes.main(('.pre-commit-config.yaml',)) == 0
|
||||
|
||||
out, _ = capsys.readouterr()
|
||||
assert out == ''
|
||||
|
||||
Reference in New Issue
Block a user