Increase robustness of tests involving git

1. Disable automatic `git commit` GPG-signing, since that requires interaction.
   This issue was encountered in practice by me, causing spurious test failures
2. In case path operands could turn out to start with dashes, escape the
   operand list with '--'.
This commit is contained in:
Sander Maijers 2016-06-12 18:49:44 +02:00
parent 6b1aa19425
commit 9e89b7616a
No known key found for this signature in database
GPG key ID: 2E974A73F1B0F2F7
4 changed files with 23 additions and 16 deletions

View file

@ -80,11 +80,18 @@ xfailif_no_gitlfs = pytest.mark.xfail(
def test_allows_gitlfs(temp_git_dir): # pragma: no cover
with temp_git_dir.as_cwd():
# Work around https://github.com/github/git-lfs/issues/913
cmd_output('git', 'commit', '--allow-empty', '-m', 'foo')
cmd_output(
'git',
'commit',
'--no-gpg-sign',
'--allow-empty',
'-m',
'foo',
)
cmd_output('git', 'lfs', 'install')
temp_git_dir.join('f.py').write('a' * 10000)
cmd_output('git', 'lfs', 'track', 'f.py')
cmd_output('git', 'add', '.')
cmd_output('git', 'add', '--', '.')
# Should succeed
assert main(('--maxkb', '9', 'f.py')) == 0
@ -96,8 +103,8 @@ def test_moves_with_gitlfs(temp_git_dir): # pragma: no cover
cmd_output('git', 'lfs', 'track', 'a.bin', 'b.bin')
# First add the file we're going to move
temp_git_dir.join('a.bin').write('a' * 10000)
cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '-am', 'foo')
cmd_output('git', 'add', '--', '.')
cmd_output('git', 'commit', '--no-gpg-sign', '-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

View file

@ -41,7 +41,7 @@ def test_file_conflicts_with_committed_file(temp_git_dir):
with temp_git_dir.as_cwd():
temp_git_dir.join('f.py').write("print('hello world')")
cmd_output('git', 'add', 'f.py')
cmd_output('git', 'commit', '--no-verify', '-m', 'Add f.py')
cmd_output('git', 'commit', '--no-gpg-sign', '-n', '-m', 'Add f.py')
temp_git_dir.join('F.py').write("print('hello world')")
cmd_output('git', 'add', 'F.py')

View file

@ -23,23 +23,23 @@ def f1_is_a_conflict_file(tmpdir):
repo2 = tmpdir.join('repo2')
repo2_f1 = repo2.join('f1')
cmd_output('git', 'init', repo1.strpath)
cmd_output('git', 'init', '--', repo1.strpath)
with repo1.as_cwd():
repo1_f1.ensure()
cmd_output('git', 'add', repo1_f1.strpath)
cmd_output('git', 'commit', '-m', 'commit1')
cmd_output('git', 'add', '--', repo1_f1.strpath)
cmd_output('git', 'commit', '--no-gpg-sign', '-m', 'commit1')
cmd_output('git', 'clone', repo1.strpath, repo2.strpath)
# Commit in master
with repo1.as_cwd():
repo1_f1.write('parent\n')
cmd_output('git', 'commit', '-am', 'master commit2')
cmd_output('git', 'commit', '--no-gpg-sign', '-am', 'master commit2')
# Commit in clone and pull
with repo2.as_cwd():
repo2_f1.write('child\n')
cmd_output('git', 'commit', '-am', 'clone commit2')
cmd_output('git', 'commit', '--no-gpg-sign', '-am', 'clone commit2')
cmd_output('git', 'pull', retcode=None)
# We should end up in a merge conflict!
f1 = repo2_f1.read()
@ -73,21 +73,21 @@ def repository_is_pending_merge(tmpdir):
cmd_output('git', 'init', repo1.strpath)
with repo1.as_cwd():
repo1_f1.ensure()
cmd_output('git', 'add', repo1_f1.strpath)
cmd_output('git', 'commit', '-m' 'commit1')
cmd_output('git', 'add', '--', repo1_f1.strpath)
cmd_output('git', 'commit', '--no-gpg-sign', '-m', 'commit1')
cmd_output('git', 'clone', repo1.strpath, repo2.strpath)
# Commit in master
with repo1.as_cwd():
repo1_f1.write('parent\n')
cmd_output('git', 'commit', '-am', 'master commit2')
cmd_output('git', 'commit', '--no-gpg-sign', '-am', 'master commit2')
# Commit in clone and pull without committing
with repo2.as_cwd():
repo2_f2.write('child\n')
cmd_output('git', 'add', repo2_f2.strpath)
cmd_output('git', 'commit', '-m', 'clone commit2')
cmd_output('git', 'add', '--', repo2_f2.strpath)
cmd_output('git', 'commit', '--no-gpg-sign', '-m', 'clone commit2')
cmd_output('git', 'pull', '--no-commit')
# We should end up in a pending merge
assert repo2_f1.read() == 'parent\n'

View file

@ -10,5 +10,5 @@ from pre_commit_hooks.util import cmd_output
@pytest.yield_fixture
def temp_git_dir(tmpdir):
git_dir = tmpdir.join('gits')
cmd_output('git', 'init', git_dir.strpath)
cmd_output('git', 'init', '--', git_dir.strpath)
yield git_dir