mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Merge pull request #3313 from pre-commit/default-stages-warning
add warning for deprecated stages values in `default_stages`
This commit is contained in:
commit
05e365fe08
2 changed files with 51 additions and 0 deletions
|
|
@ -125,6 +125,32 @@ class DeprecatedStagesWarning(NamedTuple):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
class DeprecatedDefaultStagesWarning(NamedTuple):
|
||||||
|
key: str
|
||||||
|
|
||||||
|
def check(self, dct: dict[str, Any]) -> None:
|
||||||
|
if self.key not in dct:
|
||||||
|
return
|
||||||
|
|
||||||
|
val = dct[self.key]
|
||||||
|
cfgv.check_array(cfgv.check_any)(val)
|
||||||
|
|
||||||
|
legacy_stages = [stage for stage in val if stage in _STAGES]
|
||||||
|
if legacy_stages:
|
||||||
|
logger.warning(
|
||||||
|
f'top-level `default_stages` uses deprecated stage names '
|
||||||
|
f'({", ".join(legacy_stages)}) which will be removed in a '
|
||||||
|
f'future version. '
|
||||||
|
f'run: `pre-commit migrate-config` to automatically fix this.',
|
||||||
|
)
|
||||||
|
|
||||||
|
def apply_default(self, dct: dict[str, Any]) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def remove_default(self, dct: dict[str, Any]) -> None:
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
MANIFEST_HOOK_DICT = cfgv.Map(
|
MANIFEST_HOOK_DICT = cfgv.Map(
|
||||||
'Hook', 'id',
|
'Hook', 'id',
|
||||||
|
|
||||||
|
|
@ -398,6 +424,7 @@ CONFIG_SCHEMA = cfgv.Map(
|
||||||
'default_language_version', DEFAULT_LANGUAGE_VERSION, {},
|
'default_language_version', DEFAULT_LANGUAGE_VERSION, {},
|
||||||
),
|
),
|
||||||
StagesMigration('default_stages', STAGES),
|
StagesMigration('default_stages', STAGES),
|
||||||
|
DeprecatedDefaultStagesWarning('default_stages'),
|
||||||
cfgv.Optional('files', check_string_regex, ''),
|
cfgv.Optional('files', check_string_regex, ''),
|
||||||
cfgv.Optional('exclude', check_string_regex, '^$'),
|
cfgv.Optional('exclude', check_string_regex, '^$'),
|
||||||
cfgv.Optional('fail_fast', cfgv.check_bool, False),
|
cfgv.Optional('fail_fast', cfgv.check_bool, False),
|
||||||
|
|
|
||||||
|
|
@ -335,6 +335,30 @@ def test_no_warning_for_non_deprecated_stages(caplog):
|
||||||
assert caplog.record_tuples == []
|
assert caplog.record_tuples == []
|
||||||
|
|
||||||
|
|
||||||
|
def test_warning_for_deprecated_default_stages(caplog):
|
||||||
|
cfg = {'default_stages': ['commit', 'push'], 'repos': []}
|
||||||
|
|
||||||
|
cfgv.validate(cfg, CONFIG_SCHEMA)
|
||||||
|
|
||||||
|
assert caplog.record_tuples == [
|
||||||
|
(
|
||||||
|
'pre_commit',
|
||||||
|
logging.WARNING,
|
||||||
|
'top-level `default_stages` uses deprecated stage names '
|
||||||
|
'(commit, push) which will be removed in a future version. '
|
||||||
|
'run: `pre-commit migrate-config` to automatically fix this.',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_warning_for_non_deprecated_default_stages(caplog):
|
||||||
|
cfg = {'default_stages': ['pre-commit', 'pre-push'], 'repos': []}
|
||||||
|
|
||||||
|
cfgv.validate(cfg, CONFIG_SCHEMA)
|
||||||
|
|
||||||
|
assert caplog.record_tuples == []
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'manifest_obj',
|
'manifest_obj',
|
||||||
(
|
(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue