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 '--'.
diff --git a/tests/check_added_large_files_test.py b/tests/check_added_large_files_test.py
index 99c60cb..ce15f5c 100644
--- a/tests/check_added_large_files_test.py
+++ b/tests/check_added_large_files_test.py
@@ -80,11 +80,18 @@
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 @@
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
diff --git a/tests/check_case_conflict_test.py b/tests/check_case_conflict_test.py
index b5f538a..077b41b 100644
--- a/tests/check_case_conflict_test.py
+++ b/tests/check_case_conflict_test.py
@@ -41,7 +41,7 @@
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')
diff --git a/tests/check_merge_conflict_test.py b/tests/check_merge_conflict_test.py
index a7dbea3..8141ade 100644
--- a/tests/check_merge_conflict_test.py
+++ b/tests/check_merge_conflict_test.py
@@ -23,23 +23,23 @@
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 @@
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'
diff --git a/tests/conftest.py b/tests/conftest.py
index c3dc342..87fec70 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -10,5 +10,5 @@
@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