Merge pull request #98 from bchess/check_symlinks

New hook tests for broken symlinks
This commit is contained in:
Anthony Sottile 2016-01-15 07:38:46 -08:00
commit eff3eafcbb
5 changed files with 44 additions and 0 deletions

View file

@ -0,0 +1,26 @@
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
import argparse
import os
import os.path
def check_symlinks(argv=None):
parser = argparse.ArgumentParser(description='Checks for broken symlinks.')
parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv)
retv = 0
for filename in args.filenames:
if os.path.islink(filename) and not os.path.exists(filename):
print('{0}: Broken symlink'.format(filename))
retv = 1
return retv
if __name__ == '__main__':
exit(check_symlinks())

View file

@ -0,0 +1 @@
does_not_exist

View file

View file

@ -0,0 +1 @@
does_exist

View file

@ -0,0 +1,16 @@
import os
import pytest
from pre_commit_hooks.check_symlinks import check_symlinks
from testing.util import get_resource_path
@pytest.mark.xfail(os.name == 'nt', reason='No symlink support on windows')
@pytest.mark.parametrize(('filename', 'expected_retval'), (
('broken_symlink', 1),
('working_symlink', 0),
))
def test_check_symlinks(filename, expected_retval):
ret = check_symlinks([get_resource_path(filename)])
assert ret == expected_retval