mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Allow hook alias to be used in SKIP. Includes test.
This commit is contained in:
parent
5840f880a9
commit
79c8b1fceb
2 changed files with 41 additions and 0 deletions
|
|
@ -86,6 +86,15 @@ def _run_single_hook(filenames, hook, repo, args, skips, cols):
|
||||||
cols=cols,
|
cols=cols,
|
||||||
))
|
))
|
||||||
return 0
|
return 0
|
||||||
|
elif hook['alias'] and hook['alias'] in skips:
|
||||||
|
output.write(get_hook_message(
|
||||||
|
_hook_msg_start(hook, args.verbose),
|
||||||
|
end_msg=SKIPPED,
|
||||||
|
end_color=color.YELLOW,
|
||||||
|
use_color=args.color,
|
||||||
|
cols=cols,
|
||||||
|
))
|
||||||
|
return 0
|
||||||
elif not filenames and not hook['always_run']:
|
elif not filenames and not hook['always_run']:
|
||||||
output.write(get_hook_message(
|
output.write(get_hook_message(
|
||||||
_hook_msg_start(hook, args.verbose),
|
_hook_msg_start(hook, args.verbose),
|
||||||
|
|
|
||||||
|
|
@ -388,6 +388,38 @@ def test_skip_hook(cap_out, store, repo_with_passing_hook):
|
||||||
assert msg in printed
|
assert msg in printed
|
||||||
|
|
||||||
|
|
||||||
|
def test_skip_aliased_hook(cap_out, store, repo_with_passing_hook):
|
||||||
|
with cwd(repo_with_passing_hook):
|
||||||
|
# Add bash hook on there again, aliased
|
||||||
|
with modify_config() as config:
|
||||||
|
config['repos'][0]['hooks'].append(
|
||||||
|
{'id': 'bash_hook', 'alias': 'foo_bash'},
|
||||||
|
)
|
||||||
|
stage_a_file()
|
||||||
|
|
||||||
|
ret, printed = _do_run(
|
||||||
|
cap_out, store, repo_with_passing_hook,
|
||||||
|
run_opts(hook='bash_hook'),
|
||||||
|
{'SKIP': 'bash_hook'},
|
||||||
|
)
|
||||||
|
assert ret == 0
|
||||||
|
# Both hooks will run since they share the same ID
|
||||||
|
assert printed.count(b'Bash hook') == 2
|
||||||
|
for msg in (b'Bash hook', b'Skipped'):
|
||||||
|
assert msg in printed
|
||||||
|
|
||||||
|
ret, printed = _do_run(
|
||||||
|
cap_out, store, repo_with_passing_hook,
|
||||||
|
run_opts(hook='foo_bash'),
|
||||||
|
{'SKIP': 'foo_bash'},
|
||||||
|
)
|
||||||
|
assert ret == 0
|
||||||
|
# Only the aliased hook runs
|
||||||
|
assert printed.count(b'Bash hook') == 1
|
||||||
|
for msg in (b'Bash hook', b'Skipped'):
|
||||||
|
assert msg in printed, printed
|
||||||
|
|
||||||
|
|
||||||
def test_hook_id_not_in_non_verbose_output(
|
def test_hook_id_not_in_non_verbose_output(
|
||||||
cap_out, store, repo_with_passing_hook,
|
cap_out, store, repo_with_passing_hook,
|
||||||
):
|
):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue