Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e97140e

Browse files
authored
Merge pull request #2181 from pre-commit/forbid-meta-override-entry
forbid overriding `entry` for meta hooks
2 parents 16f6825 + d3b4f73 commit e97140e

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

pre_commit/clientlib.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,12 +251,21 @@ def warn_unknown_keys_repo(
251251
),
252252
)
253253

254+
255+
class NotAllowed(cfgv.OptionalNoDefault):
256+
def check(self, dct: Dict[str, Any]) -> None:
257+
if self.key in dct:
258+
raise cfgv.ValidationError(f'{self.key!r} cannot be overridden')
259+
260+
254261
META_HOOK_DICT = cfgv.Map(
255262
'Hook', 'id',
256263
cfgv.Required('id', cfgv.check_string),
257264
cfgv.Required('id', cfgv.check_one_of(tuple(k for k, _ in _meta))),
258265
# language must be system
259266
cfgv.Optional('language', cfgv.check_one_of({'system'}), 'system'),
267+
# entry cannot be overridden
268+
NotAllowed('entry', cfgv.check_any),
260269
*(
261270
# default to the hook definition for the meta hooks
262271
cfgv.ConditionalOptional(key, cfgv.check_any, value, 'id', hook_id)

tests/clientlib_test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,13 @@ def test_migrate_to_sha_ok():
423423
{'repo': 'meta', 'hooks': [{'id': 'identity', 'language': 'python'}]},
424424
# name override must be string
425425
{'repo': 'meta', 'hooks': [{'id': 'identity', 'name': False}]},
426+
pytest.param(
427+
{
428+
'repo': 'meta',
429+
'hooks': [{'id': 'identity', 'entry': 'echo hi'}],
430+
},
431+
id='cannot override entry for meta hooks',
432+
),
426433
),
427434
)
428435
def test_meta_hook_invalid(config_repo):

0 commit comments

Comments
 (0)