Teach check-large-files-added about git-lfs. Reslves #82.

This commit is contained in:
Anthony Sottile 2015-12-25 09:25:14 -08:00
parent 2c62e4aafc
commit 3f6f23d73f
6 changed files with 109 additions and 2 deletions

View file

@ -1,6 +1,10 @@
from __future__ import absolute_import
from __future__ import unicode_literals
import subprocess
import pytest
from pre_commit_hooks.check_added_large_files import find_large_added_files
from pre_commit_hooks.check_added_large_files import main
from pre_commit_hooks.util import cmd_output
@ -62,3 +66,40 @@ def test_integration(temp_git_dir):
# Should fail with --maxkb
assert main(argv=['--maxkb', '9', 'f.py']) == 1
def has_gitlfs():
output = cmd_output('git', 'lfs', retcode=None, stderr=subprocess.STDOUT)
return 'git lfs status' in output
xfailif_no_gitlfs = pytest.mark.xfail(
not has_gitlfs(), reason='This test requires git-lfs',
)
@xfailif_no_gitlfs
def test_allows_gitlfs(temp_git_dir): # pragma: no cover
with cwd(temp_git_dir):
# Work around https://github.com/github/git-lfs/issues/913
cmd_output('git', 'commit', '--allow-empty', '-m', 'foo')
cmd_output('git', 'lfs', 'install')
write_file('f.py', 'a' * 10000)
cmd_output('git', 'lfs', 'track', 'f.py')
cmd_output('git', 'add', '.')
# Should succeed
assert main(('--maxkb', '9', 'f.py')) == 0
@xfailif_no_gitlfs
def test_moves_with_gitlfs(temp_git_dir): # pragma: no cover
with cwd(temp_git_dir):
cmd_output('git', 'lfs', 'install')
cmd_output('git', 'lfs', 'track', 'a.bin', 'b.bin')
# First add the file we're going to move
write_file('a.bin', 'a' * 10000)
cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '-am', 'foo')
# Now move it and make sure the hook still succeeds
cmd_output('git', 'mv', 'a.bin', 'b.bin')
assert main(('--maxkb', '9', 'b.bin')) == 0