mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
commit
826aa4cebd
3 changed files with 20 additions and 1 deletions
|
|
@ -27,10 +27,14 @@ IDENTIFYING_HASH = '79f09a650522a87b0da915d0d983b2de'
|
||||||
|
|
||||||
|
|
||||||
def is_our_pre_commit(filename):
|
def is_our_pre_commit(filename):
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
return False
|
||||||
return IDENTIFYING_HASH in io.open(filename).read()
|
return IDENTIFYING_HASH in io.open(filename).read()
|
||||||
|
|
||||||
|
|
||||||
def is_previous_pre_commit(filename):
|
def is_previous_pre_commit(filename):
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
return False
|
||||||
contents = io.open(filename).read()
|
contents = io.open(filename).read()
|
||||||
return any(hash in contents for hash in PREVIOUS_IDENTIFYING_HASHES)
|
return any(hash in contents for hash in PREVIOUS_IDENTIFYING_HASHES)
|
||||||
|
|
||||||
|
|
@ -53,7 +57,7 @@ def install(runner, overwrite=False, hooks=False, hook_type='pre-commit'):
|
||||||
|
|
||||||
# If we have an existing hook, move it to pre-commit.legacy
|
# If we have an existing hook, move it to pre-commit.legacy
|
||||||
if (
|
if (
|
||||||
os.path.exists(hook_path) and
|
os.path.lexists(hook_path) and
|
||||||
not is_our_pre_commit(hook_path) and
|
not is_our_pre_commit(hook_path) and
|
||||||
not is_previous_pre_commit(hook_path)
|
not is_previous_pre_commit(hook_path)
|
||||||
):
|
):
|
||||||
|
|
|
||||||
|
|
@ -73,3 +73,8 @@ xfailif_no_pcre_support = pytest.mark.xfail(
|
||||||
not platform_supports_pcre(),
|
not platform_supports_pcre(),
|
||||||
reason='grep -P is not supported on this platform',
|
reason='grep -P is not supported on this platform',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
xfailif_no_symlink = pytest.mark.xfail(
|
||||||
|
not hasattr(os, 'symlink'),
|
||||||
|
reason='Symlink is not supported on this platform',
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ from pre_commit.util import cwd
|
||||||
from pre_commit.util import resource_filename
|
from pre_commit.util import resource_filename
|
||||||
from testing.fixtures import git_dir
|
from testing.fixtures import git_dir
|
||||||
from testing.fixtures import make_consuming_repo
|
from testing.fixtures import make_consuming_repo
|
||||||
|
from testing.util import xfailif_no_symlink
|
||||||
|
|
||||||
|
|
||||||
def test_is_not_our_pre_commit():
|
def test_is_not_our_pre_commit():
|
||||||
|
|
@ -88,6 +89,15 @@ def test_install_hooks_directory_not_present(tmpdir_factory):
|
||||||
assert os.path.exists(runner.pre_commit_path)
|
assert os.path.exists(runner.pre_commit_path)
|
||||||
|
|
||||||
|
|
||||||
|
@xfailif_no_symlink
|
||||||
|
def test_install_hooks_dead_symlink(tmpdir_factory):
|
||||||
|
path = git_dir(tmpdir_factory)
|
||||||
|
os.symlink('/fake/baz', os.path.join(path, '.git', 'hooks', 'pre-commit'))
|
||||||
|
runner = Runner(path)
|
||||||
|
install(runner)
|
||||||
|
assert os.path.exists(runner.pre_commit_path)
|
||||||
|
|
||||||
|
|
||||||
def test_uninstall_does_not_blow_up_when_not_there(tmpdir_factory):
|
def test_uninstall_does_not_blow_up_when_not_there(tmpdir_factory):
|
||||||
path = git_dir(tmpdir_factory)
|
path = git_dir(tmpdir_factory)
|
||||||
runner = Runner(path)
|
runner = Runner(path)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue