1
0
Fork 0

Adding upstream version 2.2.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-09 21:10:22 +01:00
parent 18c908e4f3
commit c0d06915b7
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
199 changed files with 14930 additions and 0 deletions

View file

View file

@ -0,0 +1,138 @@
from pre_commit.meta_hooks import check_hooks_apply
from testing.fixtures import add_config_to_repo
def test_hook_excludes_everything(capsys, in_git_dir, mock_store_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'exclude': '.pre-commit-config.yaml',
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_hooks_apply.main(()) == 1
out, _ = capsys.readouterr()
assert 'check-useless-excludes does not apply to this repository' in out
def test_hook_includes_nothing(capsys, in_git_dir, mock_store_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'files': 'foo',
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_hooks_apply.main(()) == 1
out, _ = capsys.readouterr()
assert 'check-useless-excludes does not apply to this repository' in out
def test_hook_types_not_matched(capsys, in_git_dir, mock_store_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'types': ['python'],
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_hooks_apply.main(()) == 1
out, _ = capsys.readouterr()
assert 'check-useless-excludes does not apply to this repository' in out
def test_hook_types_excludes_everything(capsys, in_git_dir, mock_store_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'exclude_types': ['yaml'],
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_hooks_apply.main(()) == 1
out, _ = capsys.readouterr()
assert 'check-useless-excludes does not apply to this repository' in out
def test_valid_exceptions(capsys, in_git_dir, mock_store_dir):
config = {
'repos': [
{
'repo': 'local',
'hooks': [
# applies to a file
{
'id': 'check-yaml',
'name': 'check yaml',
'entry': './check-yaml',
'language': 'script',
'files': r'\.yaml$',
},
# Should not be reported as an error due to language: fail
{
'id': 'changelogs-rst',
'name': 'changelogs must be rst',
'entry': 'changelog filenames must end in .rst',
'language': 'fail',
'files': r'changelog/.*(?<!\.rst)$',
},
# Should not be reported as an error due to always_run
{
'id': 'i-always-run',
'name': 'make check',
'entry': 'make check',
'language': 'system',
'files': '^$',
'always_run': True,
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_hooks_apply.main(()) == 0
out, _ = capsys.readouterr()
assert out == ''

View file

@ -0,0 +1,115 @@
from pre_commit.meta_hooks import check_useless_excludes
from testing.fixtures import add_config_to_repo
def test_useless_exclude_global(capsys, in_git_dir):
config = {
'exclude': 'foo',
'repos': [
{
'repo': 'meta',
'hooks': [{'id': 'check-useless-excludes'}],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_useless_excludes.main(()) == 1
out, _ = capsys.readouterr()
out = out.strip()
assert "The global exclude pattern 'foo' does not match any files" == out
def test_useless_exclude_for_hook(capsys, in_git_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [{'id': 'check-useless-excludes', 'exclude': 'foo'}],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_useless_excludes.main(()) == 1
out, _ = capsys.readouterr()
out = out.strip()
expected = (
"The exclude pattern 'foo' for check-useless-excludes "
'does not match any files'
)
assert expected == out
def test_useless_exclude_with_types_filter(capsys, in_git_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'exclude': '.pre-commit-config.yaml',
'types': ['python'],
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_useless_excludes.main(()) == 1
out, _ = capsys.readouterr()
out = out.strip()
expected = (
"The exclude pattern '.pre-commit-config.yaml' for "
'check-useless-excludes does not match any files'
)
assert expected == out
def test_no_excludes(capsys, in_git_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [{'id': 'check-useless-excludes'}],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_useless_excludes.main(()) == 0
out, _ = capsys.readouterr()
assert out == ''
def test_valid_exclude(capsys, in_git_dir):
config = {
'repos': [
{
'repo': 'meta',
'hooks': [
{
'id': 'check-useless-excludes',
'exclude': '.pre-commit-config.yaml',
},
],
},
],
}
add_config_to_repo(in_git_dir.strpath, config)
assert check_useless_excludes.main(()) == 0
out, _ = capsys.readouterr()
assert out == ''

View file

@ -0,0 +1,6 @@
from pre_commit.meta_hooks import identity
def test_identity(cap_out):
assert not identity.main(('a', 'b', 'c'))
assert cap_out.get() == 'a\nb\nc\n'