Merge pull request #2656 from pre-commit/remove-list-format

remove support for top-level list format
This commit is contained in:
Anthony Sottile 2022-12-27 12:09:42 -05:00 committed by GitHub
commit 12a979ea75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 66 additions and 79 deletions

View file

@ -391,23 +391,10 @@ class InvalidConfigError(FatalError):
pass pass
def ordered_load_normalize_legacy_config(contents: str) -> dict[str, Any]:
data = yaml_load(contents)
if isinstance(data, list):
logger.warning(
'normalizing pre-commit configuration to a top-level map. '
'support for top level list will be removed in a future version. '
'run: `pre-commit migrate-config` to automatically fix this.',
)
return {'repos': data}
else:
return data
load_config = functools.partial( load_config = functools.partial(
cfgv.load_from_filename, cfgv.load_from_filename,
schema=CONFIG_SCHEMA, schema=CONFIG_SCHEMA,
load_strategy=ordered_load_normalize_legacy_config, load_strategy=yaml_load,
exc_tp=InvalidConfigError, exc_tp=InvalidConfigError,
) )

View file

@ -120,14 +120,6 @@ def test_validate_config_main_ok():
assert not validate_config_main(('.pre-commit-config.yaml',)) assert not validate_config_main(('.pre-commit-config.yaml',))
def test_validate_config_old_list_format_ok(tmpdir, cap_out):
f = tmpdir.join('cfg.yaml')
f.write('- {repo: meta, hooks: [{id: identity}]}')
assert not validate_config_main((f.strpath,))
msg = '[WARNING] normalizing pre-commit configuration to a top-level map'
assert msg in cap_out.get()
def test_validate_warn_on_unknown_keys_at_repo_level(tmpdir, caplog): def test_validate_warn_on_unknown_keys_at_repo_level(tmpdir, caplog):
f = tmpdir.join('cfg.yaml') f = tmpdir.join('cfg.yaml')
f.write( f.write(

View file

@ -739,20 +739,22 @@ def test_commit_msg_legacy(commit_msg_repo, tempdir_factory, store):
def test_post_commit_integration(tempdir_factory, store): def test_post_commit_integration(tempdir_factory, store):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
config = [ config = {
{ 'repos': [
'repo': 'local', {
'hooks': [{ 'repo': 'local',
'id': 'post-commit', 'hooks': [{
'name': 'Post commit', 'id': 'post-commit',
'entry': 'touch post-commit.tmp', 'name': 'Post commit',
'language': 'system', 'entry': 'touch post-commit.tmp',
'always_run': True, 'language': 'system',
'verbose': True, 'always_run': True,
'stages': ['post-commit'], 'verbose': True,
}], 'stages': ['post-commit'],
}, }],
] },
],
}
write_config(path, config) write_config(path, config)
with cwd(path): with cwd(path):
_get_commit_output(tempdir_factory) _get_commit_output(tempdir_factory)
@ -765,20 +767,22 @@ def test_post_commit_integration(tempdir_factory, store):
def test_post_merge_integration(tempdir_factory, store): def test_post_merge_integration(tempdir_factory, store):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
config = [ config = {
{ 'repos': [
'repo': 'local', {
'hooks': [{ 'repo': 'local',
'id': 'post-merge', 'hooks': [{
'name': 'Post merge', 'id': 'post-merge',
'entry': 'touch post-merge.tmp', 'name': 'Post merge',
'language': 'system', 'entry': 'touch post-merge.tmp',
'always_run': True, 'language': 'system',
'verbose': True, 'always_run': True,
'stages': ['post-merge'], 'verbose': True,
}], 'stages': ['post-merge'],
}, }],
] },
],
}
write_config(path, config) write_config(path, config)
with cwd(path): with cwd(path):
# create a simple diamond of commits for a non-trivial merge # create a simple diamond of commits for a non-trivial merge
@ -807,20 +811,22 @@ def test_post_merge_integration(tempdir_factory, store):
def test_post_rewrite_integration(tempdir_factory, store): def test_post_rewrite_integration(tempdir_factory, store):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
config = [ config = {
{ 'repos': [
'repo': 'local', {
'hooks': [{ 'repo': 'local',
'id': 'post-rewrite', 'hooks': [{
'name': 'Post rewrite', 'id': 'post-rewrite',
'entry': 'touch post-rewrite.tmp', 'name': 'Post rewrite',
'language': 'system', 'entry': 'touch post-rewrite.tmp',
'always_run': True, 'language': 'system',
'verbose': True, 'always_run': True,
'stages': ['post-rewrite'], 'verbose': True,
}], 'stages': ['post-rewrite'],
}, }],
] },
],
}
write_config(path, config) write_config(path, config)
with cwd(path): with cwd(path):
open('init', 'a').close() open('init', 'a').close()
@ -836,21 +842,23 @@ def test_post_rewrite_integration(tempdir_factory, store):
def test_post_checkout_integration(tempdir_factory, store): def test_post_checkout_integration(tempdir_factory, store):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
config = [ config = {
{ 'repos': [
'repo': 'local', {
'hooks': [{ 'repo': 'local',
'id': 'post-checkout', 'hooks': [{
'name': 'Post checkout', 'id': 'post-checkout',
'entry': 'bash -c "echo ${PRE_COMMIT_TO_REF}"', 'name': 'Post checkout',
'language': 'system', 'entry': 'bash -c "echo ${PRE_COMMIT_TO_REF}"',
'always_run': True, 'language': 'system',
'verbose': True, 'always_run': True,
'stages': ['post-checkout'], 'verbose': True,
}], 'stages': ['post-checkout'],
}, }],
{'repo': 'meta', 'hooks': [{'id': 'identity'}]}, },
] {'repo': 'meta', 'hooks': [{'id': 'identity'}]},
],
}
write_config(path, config) write_config(path, config)
with cwd(path): with cwd(path):
cmd_output('git', 'add', '.') cmd_output('git', 'add', '.')