mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-14 13:00:10 -06:00
Merge pull request #803 from mblayman/args-hook-only
Run only the specified hook even when stages exist in config.
This commit is contained in:
@@ -256,7 +256,7 @@ def run(runner, store, args, environ=os.environ):
|
||||
for _, hook in repo.hooks:
|
||||
if (
|
||||
(not args.hook or hook['id'] == args.hook) and
|
||||
not hook['stages'] or args.hook_stage in hook['stages']
|
||||
(not hook['stages'] or args.hook_stage in hook['stages'])
|
||||
):
|
||||
repo_hooks.append((repo, hook))
|
||||
|
||||
|
||||
@@ -762,3 +762,34 @@ def test_include_exclude_does_search_instead_of_match(some_filenames):
|
||||
def test_include_exclude_exclude_removes_files(some_filenames):
|
||||
ret = _filter_by_include_exclude(some_filenames, '', r'\.py$')
|
||||
assert ret == ['.pre-commit-hooks.yaml']
|
||||
|
||||
|
||||
def test_args_hook_only(cap_out, store, repo_with_passing_hook):
|
||||
config = OrderedDict((
|
||||
('repo', 'local'),
|
||||
(
|
||||
'hooks', (
|
||||
OrderedDict((
|
||||
('id', 'flake8'),
|
||||
('name', 'flake8'),
|
||||
('entry', "'{}' -m flake8".format(sys.executable)),
|
||||
('language', 'system'),
|
||||
('stages', ['commit']),
|
||||
)), OrderedDict((
|
||||
('id', 'do_not_commit'),
|
||||
('name', 'Block if "DO NOT COMMIT" is found'),
|
||||
('entry', 'DO NOT COMMIT'),
|
||||
('language', 'pygrep'),
|
||||
)),
|
||||
),
|
||||
),
|
||||
))
|
||||
add_config_to_repo(repo_with_passing_hook, config)
|
||||
stage_a_file()
|
||||
ret, printed = _do_run(
|
||||
cap_out,
|
||||
store,
|
||||
repo_with_passing_hook,
|
||||
run_opts(hook='do_not_commit'),
|
||||
)
|
||||
assert b'flake8' not in printed
|
||||
|
||||
Reference in New Issue
Block a user