Don't fail if GPG signing is configured by default. All references.

This commit is contained in:
Pedro Algarvio 2018-12-28 20:06:52 +00:00
parent 7afb2944b2
commit 28c97a95cd
No known key found for this signature in database
GPG key ID: BB36BF6584A298FF
10 changed files with 60 additions and 50 deletions

View file

@ -18,6 +18,7 @@ from pre_commit.clientlib import CONFIG_SCHEMA
from pre_commit.clientlib import load_manifest from pre_commit.clientlib import load_manifest
from pre_commit.util import cmd_output from pre_commit.util import cmd_output
from testing.util import get_resource_path from testing.util import get_resource_path
from testing.util import git_commit
def copy_tree_to_path(src_dir, dest_dir): def copy_tree_to_path(src_dir, dest_dir):
@ -48,7 +49,7 @@ def make_repo(tempdir_factory, repo_source):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
copy_tree_to_path(get_resource_path(repo_source), path) copy_tree_to_path(get_resource_path(repo_source), path)
cmd_output('git', 'add', '.', cwd=path) cmd_output('git', 'add', '.', cwd=path)
cmd_output('git', 'commit', '--no-gpg-sign', '-m', 'Add hooks', cwd=path) git_commit('Add hooks', cwd=path)
return path return path
@ -63,11 +64,7 @@ def modify_manifest(path):
yield manifest yield manifest
with io.open(manifest_path, 'w') as manifest_file: with io.open(manifest_path, 'w') as manifest_file:
manifest_file.write(ordered_dump(manifest, **C.YAML_DUMP_KWARGS)) manifest_file.write(ordered_dump(manifest, **C.YAML_DUMP_KWARGS))
cmd_output( git_commit('update {}'.format(C.MANIFEST_FILE), cwd=path)
'git', 'commit', '--no-gpg-sign', '-am',
'update {}'.format(C.MANIFEST_FILE),
cwd=path,
)
@contextlib.contextmanager @contextlib.contextmanager
@ -82,9 +79,7 @@ def modify_config(path='.', commit=True):
with io.open(config_path, 'w', encoding='UTF-8') as config_file: with io.open(config_path, 'w', encoding='UTF-8') as config_file:
config_file.write(ordered_dump(config, **C.YAML_DUMP_KWARGS)) config_file.write(ordered_dump(config, **C.YAML_DUMP_KWARGS))
if commit: if commit:
cmd_output( git_commit('update config', cwd=path)
'git', 'commit', '--no-gpg-sign', '-am', 'update config', cwd=path,
)
def config_with_local_hooks(): def config_with_local_hooks():
@ -140,19 +135,13 @@ def write_config(directory, config, config_file=C.CONFIG_FILE):
def add_config_to_repo(git_path, config, config_file=C.CONFIG_FILE): def add_config_to_repo(git_path, config, config_file=C.CONFIG_FILE):
write_config(git_path, config, config_file=config_file) write_config(git_path, config, config_file=config_file)
cmd_output('git', 'add', config_file, cwd=git_path) cmd_output('git', 'add', config_file, cwd=git_path)
cmd_output( git_commit('Add hooks config', cwd=git_path)
'git', 'commit', '--no-gpg-sign', '-m', 'Add hooks config',
cwd=git_path,
)
return git_path return git_path
def remove_config_from_repo(git_path, config_file=C.CONFIG_FILE): def remove_config_from_repo(git_path, config_file=C.CONFIG_FILE):
cmd_output('git', 'rm', config_file, cwd=git_path) cmd_output('git', 'rm', config_file, cwd=git_path)
cmd_output( git_commit('Remove hooks config', cwd=git_path)
'git', 'commit', '--no-gpg-sign', '-m', 'Remove hooks config',
cwd=git_path,
)
return git_path return git_path

View file

@ -133,3 +133,18 @@ def cwd(path):
yield yield
finally: finally:
os.chdir(original_cwd) os.chdir(original_cwd)
def git_commit(msg, *_args, **kwargs):
args = ['git']
config = kwargs.pop('config', None)
if config is not None:
args.extend(['-C', config])
args.append('commit')
if msg is not None:
args.extend(['-m', msg])
if '--allow-empty' not in _args:
args.append('--allow-empty')
if '--no-gpg-sign' not in _args:
args.append('--no-gpg-sign')
return cmd_output(*(tuple(args) + tuple(_args)), **kwargs)

View file

@ -21,6 +21,7 @@ from testing.fixtures import make_config_from_repo
from testing.fixtures import make_repo from testing.fixtures import make_repo
from testing.fixtures import write_config from testing.fixtures import write_config
from testing.util import get_resource_path from testing.util import get_resource_path
from testing.util import git_commit
@pytest.fixture @pytest.fixture
@ -59,11 +60,11 @@ def test_autoupdate_old_revision_broken(tempdir_factory, in_tmpdir, store):
config = make_config_from_repo(path, check=False) config = make_config_from_repo(path, check=False)
cmd_output('git', 'mv', C.MANIFEST_FILE, 'nope.yaml', cwd=path) cmd_output('git', 'mv', C.MANIFEST_FILE, 'nope.yaml', cwd=path)
cmd_output('git', 'commit', '-m', 'simulate old repo', cwd=path) git_commit('simulate old repo', cwd=path)
# Assume this is the revision the user's old repository was at # Assume this is the revision the user's old repository was at
rev = git.head_rev(path) rev = git.head_rev(path)
cmd_output('git', 'mv', 'nope.yaml', C.MANIFEST_FILE, cwd=path) cmd_output('git', 'mv', 'nope.yaml', C.MANIFEST_FILE, cwd=path)
cmd_output('git', 'commit', '-m', 'move hooks file', cwd=path) git_commit('move hooks file', cwd=path)
update_rev = git.head_rev(path) update_rev = git.head_rev(path)
config['rev'] = rev config['rev'] = rev
@ -84,7 +85,7 @@ def out_of_date_repo(tempdir_factory):
original_rev = git.head_rev(path) original_rev = git.head_rev(path)
# Make a commit # Make a commit
cmd_output('git', 'commit', '--allow-empty', '-m', 'foo', cwd=path) git_commit('foo', cwd=path)
head_rev = git.head_rev(path) head_rev = git.head_rev(path)
yield auto_namedtuple( yield auto_namedtuple(
@ -239,7 +240,7 @@ def test_autoupdate_tagged_repo(tagged_repo, in_tmpdir, store):
@pytest.fixture @pytest.fixture
def tagged_repo_with_more_commits(tagged_repo): def tagged_repo_with_more_commits(tagged_repo):
cmd_output('git', 'commit', '--allow-empty', '-mfoo', cwd=tagged_repo.path) git_commit('foo', cwd=tagged_repo.path)
yield tagged_repo yield tagged_repo
@ -263,7 +264,7 @@ def test_autoupdate_latest_no_config(out_of_date_repo, in_tmpdir, store):
write_config('.', config) write_config('.', config)
cmd_output('git', '-C', out_of_date_repo.path, 'rm', '-r', ':/') cmd_output('git', '-C', out_of_date_repo.path, 'rm', '-r', ':/')
cmd_output('git', '-C', out_of_date_repo.path, 'commit', '-m', 'rm') git_commit('rm', config=out_of_date_repo.path)
ret = autoupdate(C.CONFIG_FILE, store, tags_only=False) ret = autoupdate(C.CONFIG_FILE, store, tags_only=False)
assert ret == 1 assert ret == 1
@ -281,7 +282,7 @@ def hook_disappearing_repo(tempdir_factory):
os.path.join(path, C.MANIFEST_FILE), os.path.join(path, C.MANIFEST_FILE),
) )
cmd_output('git', 'add', '.', cwd=path) cmd_output('git', 'add', '.', cwd=path)
cmd_output('git', 'commit', '-m', 'Remove foo', cwd=path) git_commit('Remove foo', cwd=path)
yield auto_namedtuple(path=path, original_rev=original_rev) yield auto_namedtuple(path=path, original_rev=original_rev)

View file

@ -28,6 +28,7 @@ from testing.fixtures import make_consuming_repo
from testing.fixtures import remove_config_from_repo from testing.fixtures import remove_config_from_repo
from testing.util import cmd_output_mocked_pre_commit_home from testing.util import cmd_output_mocked_pre_commit_home
from testing.util import cwd from testing.util import cwd
from testing.util import git_commit
from testing.util import xfailif_no_symlink from testing.util import xfailif_no_symlink
@ -109,7 +110,7 @@ def _get_commit_output(tempdir_factory, touch_file='foo', **kwargs):
open(touch_file, 'a').close() open(touch_file, 'a').close()
cmd_output('git', 'add', touch_file) cmd_output('git', 'add', touch_file)
return cmd_output_mocked_pre_commit_home( return cmd_output_mocked_pre_commit_home(
'git', 'commit', '-am', commit_msg, '--allow-empty', 'git', 'commit', '-am', commit_msg, '--allow-empty', '--no-gpg-sign',
# git commit puts pre-commit to stderr # git commit puts pre-commit to stderr
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
retcode=None, retcode=None,
@ -151,7 +152,7 @@ def test_install_pre_commit_and_run_custom_path(tempdir_factory, store):
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo') path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
with cwd(path): with cwd(path):
cmd_output('git', 'mv', C.CONFIG_FILE, 'custom-config.yaml') cmd_output('git', 'mv', C.CONFIG_FILE, 'custom-config.yaml')
cmd_output('git', 'commit', '-m', 'move pre-commit config') git_commit('move pre-commit config')
assert install('custom-config.yaml', store) == 0 assert install('custom-config.yaml', store) == 0
ret, output = _get_commit_output(tempdir_factory) ret, output = _get_commit_output(tempdir_factory)
@ -163,7 +164,7 @@ def test_install_in_submodule_and_run(tempdir_factory, store):
src_path = make_consuming_repo(tempdir_factory, 'script_hooks_repo') src_path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
parent_path = git_dir(tempdir_factory) parent_path = git_dir(tempdir_factory)
cmd_output('git', 'submodule', 'add', src_path, 'sub', cwd=parent_path) cmd_output('git', 'submodule', 'add', src_path, 'sub', cwd=parent_path)
cmd_output('git', 'commit', '-m', 'foo', cwd=parent_path) git_commit('foo', cwd=parent_path)
sub_pth = os.path.join(parent_path, 'sub') sub_pth = os.path.join(parent_path, 'sub')
with cwd(sub_pth): with cwd(sub_pth):
@ -193,7 +194,7 @@ def test_commit_am(tempdir_factory, store):
# Make an unstaged change # Make an unstaged change
open('unstaged', 'w').close() open('unstaged', 'w').close()
cmd_output('git', 'add', '.') cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '-m', 'foo') git_commit('foo')
with io.open('unstaged', 'w') as foo_file: with io.open('unstaged', 'w') as foo_file:
foo_file.write('Oh hai') foo_file.write('Oh hai')
@ -208,12 +209,12 @@ def test_unicode_merge_commit_message(tempdir_factory, store):
with cwd(path): with cwd(path):
assert install(C.CONFIG_FILE, store) == 0 assert install(C.CONFIG_FILE, store) == 0
cmd_output('git', 'checkout', 'master', '-b', 'foo') cmd_output('git', 'checkout', 'master', '-b', 'foo')
cmd_output('git', 'commit', '--allow-empty', '-n', '-m', 'branch2') git_commit('branch2', '-n')
cmd_output('git', 'checkout', 'master') cmd_output('git', 'checkout', 'master')
cmd_output('git', 'merge', 'foo', '--no-ff', '--no-commit', '-m', '') cmd_output('git', 'merge', 'foo', '--no-ff', '--no-commit', '-m', '')
# Used to crash # Used to crash
cmd_output_mocked_pre_commit_home( cmd_output_mocked_pre_commit_home(
'git', 'commit', '--no-edit', 'git', 'commit', '--no-edit', '--no-gpg-sign',
tempdir_factory=tempdir_factory, tempdir_factory=tempdir_factory,
) )
@ -246,8 +247,8 @@ def test_environment_not_sourced(tempdir_factory, store):
# Use a specific homedir to ignore --user installs # Use a specific homedir to ignore --user installs
homedir = tempdir_factory.get() homedir = tempdir_factory.get()
ret, stdout, stderr = cmd_output( ret, stdout, stderr = git_commit(
'git', 'commit', '--allow-empty', '-m', 'foo', 'foo',
env={ env={
'HOME': homedir, 'HOME': homedir,
'PATH': _path_without_us(), 'PATH': _path_without_us(),

View file

@ -479,7 +479,7 @@ def test_stdout_write_bug_py26(repo_with_failing_hook, store, tempdir_factory):
# Have to use subprocess because pytest monkeypatches sys.stdout # Have to use subprocess because pytest monkeypatches sys.stdout
_, stdout, _ = cmd_output_mocked_pre_commit_home( _, stdout, _ = cmd_output_mocked_pre_commit_home(
'git', 'commit', '-m', 'Commit!', 'git', 'commit', '-m', 'Commit!', '--no-gpg-sign',
# git commit puts pre-commit to stderr # git commit puts pre-commit to stderr
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
retcode=None, retcode=None,
@ -508,7 +508,7 @@ def test_lots_of_files(store, tempdir_factory):
install(C.CONFIG_FILE, store) install(C.CONFIG_FILE, store)
cmd_output_mocked_pre_commit_home( cmd_output_mocked_pre_commit_home(
'git', 'commit', '-m', 'Commit!', 'git', 'commit', '-m', 'Commit!', '--no-gpg-sign',
# git commit puts pre-commit to stderr # git commit puts pre-commit to stderr
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
tempdir_factory=tempdir_factory, tempdir_factory=tempdir_factory,

View file

@ -19,6 +19,7 @@ from testing.fixtures import git_dir
from testing.fixtures import make_consuming_repo from testing.fixtures import make_consuming_repo
from testing.fixtures import write_config from testing.fixtures import write_config
from testing.util import cwd from testing.util import cwd
from testing.util import git_commit
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -79,7 +80,7 @@ def _make_conflict():
with io.open('foo_only_file', 'w') as foo_only_file: with io.open('foo_only_file', 'w') as foo_only_file:
foo_only_file.write('foo') foo_only_file.write('foo')
cmd_output('git', 'add', 'foo_only_file') cmd_output('git', 'add', 'foo_only_file')
cmd_output('git', 'commit', '-m', 'conflict_file') git_commit('conflict_file')
cmd_output('git', 'checkout', 'origin/master', '-b', 'bar') cmd_output('git', 'checkout', 'origin/master', '-b', 'bar')
with io.open('conflict_file', 'w') as conflict_file: with io.open('conflict_file', 'w') as conflict_file:
conflict_file.write('harp\nddrp\n') conflict_file.write('harp\nddrp\n')
@ -87,7 +88,7 @@ def _make_conflict():
with io.open('bar_only_file', 'w') as bar_only_file: with io.open('bar_only_file', 'w') as bar_only_file:
bar_only_file.write('bar') bar_only_file.write('bar')
cmd_output('git', 'add', 'bar_only_file') cmd_output('git', 'add', 'bar_only_file')
cmd_output('git', 'commit', '-m', 'conflict_file') git_commit('conflict_file')
cmd_output('git', 'merge', 'foo', retcode=None) cmd_output('git', 'merge', 'foo', retcode=None)
@ -96,7 +97,7 @@ def in_merge_conflict(tempdir_factory):
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo') path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
open(os.path.join(path, 'dummy'), 'a').close() open(os.path.join(path, 'dummy'), 'a').close()
cmd_output('git', 'add', 'dummy', cwd=path) cmd_output('git', 'add', 'dummy', cwd=path)
cmd_output('git', 'commit', '-m', 'Add config.', cwd=path) git_commit('Add config.', cwd=path)
conflict_path = tempdir_factory.get() conflict_path = tempdir_factory.get()
cmd_output('git', 'clone', path, conflict_path) cmd_output('git', 'clone', path, conflict_path)
@ -109,7 +110,7 @@ def in_merge_conflict(tempdir_factory):
def in_conflicting_submodule(tempdir_factory): def in_conflicting_submodule(tempdir_factory):
git_dir_1 = git_dir(tempdir_factory) git_dir_1 = git_dir(tempdir_factory)
git_dir_2 = git_dir(tempdir_factory) git_dir_2 = git_dir(tempdir_factory)
cmd_output('git', 'commit', '--allow-empty', '-minit!', cwd=git_dir_2) git_commit('init!', cwd=git_dir_2)
cmd_output('git', 'submodule', 'add', git_dir_2, 'sub', cwd=git_dir_1) cmd_output('git', 'submodule', 'add', git_dir_2, 'sub', cwd=git_dir_1)
with cwd(os.path.join(git_dir_1, 'sub')): with cwd(os.path.join(git_dir_1, 'sub')):
_make_conflict() _make_conflict()
@ -135,7 +136,7 @@ def commit_msg_repo(tempdir_factory):
write_config(path, config) write_config(path, config)
with cwd(path): with cwd(path):
cmd_output('git', 'add', '.') cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '-m', 'add hooks') git_commit('add hooks')
yield path yield path

View file

@ -9,6 +9,7 @@ import pytest
from pre_commit import git from pre_commit import git
from pre_commit.error_handler import FatalError from pre_commit.error_handler import FatalError
from pre_commit.util import cmd_output from pre_commit.util import cmd_output
from testing.util import git_commit
def test_get_root_at_root(in_git_dir): def test_get_root_at_root(in_git_dir):
@ -104,11 +105,11 @@ def test_parse_merge_msg_for_conflicts(input, expected_output):
def test_get_changed_files(in_git_dir): def test_get_changed_files(in_git_dir):
cmd_output('git', 'commit', '--allow-empty', '-m', 'initial commit') git_commit('initial commit')
in_git_dir.join('a.txt').ensure() in_git_dir.join('a.txt').ensure()
in_git_dir.join('b.txt').ensure() in_git_dir.join('b.txt').ensure()
cmd_output('git', 'add', '.') cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '-m', 'add some files') git_commit('add some files')
files = git.get_changed_files('HEAD', 'HEAD^') files = git.get_changed_files('HEAD', 'HEAD^')
assert files == ['a.txt', 'b.txt'] assert files == ['a.txt', 'b.txt']
@ -132,10 +133,10 @@ def test_zsplit(s, expected):
@pytest.fixture @pytest.fixture
def non_ascii_repo(in_git_dir): def non_ascii_repo(in_git_dir):
cmd_output('git', 'commit', '--allow-empty', '-m', 'initial commit') git_commit('initial commit')
in_git_dir.join('интервью').ensure() in_git_dir.join('интервью').ensure()
cmd_output('git', 'add', '.') cmd_output('git', 'add', '.')
cmd_output('git', 'commit', '--allow-empty', '-m', 'initial commit') git_commit('initial commit')
yield in_git_dir yield in_git_dir

View file

@ -8,6 +8,7 @@ from pre_commit import git
from pre_commit import make_archives from pre_commit import make_archives
from pre_commit.util import cmd_output from pre_commit.util import cmd_output
from testing.fixtures import git_dir from testing.fixtures import git_dir
from testing.util import git_commit
def test_make_archive(tempdir_factory): def test_make_archive(tempdir_factory):
@ -16,13 +17,13 @@ def test_make_archive(tempdir_factory):
# Add a files to the git directory # Add a files to the git directory
open(os.path.join(git_path, 'foo'), 'a').close() open(os.path.join(git_path, 'foo'), 'a').close()
cmd_output('git', 'add', '.', cwd=git_path) cmd_output('git', 'add', '.', cwd=git_path)
cmd_output('git', 'commit', '-m', 'foo', cwd=git_path) git_commit('foo', cwd=git_path)
# We'll use this rev # We'll use this rev
head_rev = git.head_rev(git_path) head_rev = git.head_rev(git_path)
# And check that this file doesn't exist # And check that this file doesn't exist
open(os.path.join(git_path, 'bar'), 'a').close() open(os.path.join(git_path, 'bar'), 'a').close()
cmd_output('git', 'add', '.', cwd=git_path) cmd_output('git', 'add', '.', cwd=git_path)
cmd_output('git', 'commit', '-m', 'bar', cwd=git_path) git_commit('bar', cwd=git_path)
# Do the thing # Do the thing
archive_path = make_archives.make_archive( archive_path = make_archives.make_archive(

View file

@ -15,6 +15,7 @@ from testing.auto_namedtuple import auto_namedtuple
from testing.fixtures import git_dir from testing.fixtures import git_dir
from testing.util import cwd from testing.util import cwd
from testing.util import get_resource_path from testing.util import get_resource_path
from testing.util import git_commit
FOO_CONTENTS = '\n'.join(('1', '2', '3', '4', '5', '6', '7', '8', '')) FOO_CONTENTS = '\n'.join(('1', '2', '3', '4', '5', '6', '7', '8', ''))
@ -186,9 +187,9 @@ def test_img_conflict(img_staged, patch_dir):
def submodule_with_commits(tempdir_factory): def submodule_with_commits(tempdir_factory):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
with cwd(path): with cwd(path):
cmd_output('git', 'commit', '--allow-empty', '-m', 'foo') git_commit('foo')
rev1 = cmd_output('git', 'rev-parse', 'HEAD')[1].strip() rev1 = cmd_output('git', 'rev-parse', 'HEAD')[1].strip()
cmd_output('git', 'commit', '--allow-empty', '-m', 'bar') git_commit('bar')
rev2 = cmd_output('git', 'rev-parse', 'HEAD')[1].strip() rev2 = cmd_output('git', 'rev-parse', 'HEAD')[1].strip()
yield auto_namedtuple(path=path, rev1=rev1, rev2=rev2) yield auto_namedtuple(path=path, rev1=rev1, rev2=rev2)
@ -331,7 +332,7 @@ def test_autocrlf_commited_crlf(in_git_dir, patch_dir):
cmd_output('git', 'config', '--local', 'core.autocrlf', 'false') cmd_output('git', 'config', '--local', 'core.autocrlf', 'false')
_write(b'1\r\n2\r\n') _write(b'1\r\n2\r\n')
cmd_output('git', 'add', 'foo') cmd_output('git', 'add', 'foo')
cmd_output('git', 'commit', '-m', 'Check in crlf') git_commit('Check in crlf')
cmd_output('git', 'config', '--local', 'core.autocrlf', 'true') cmd_output('git', 'config', '--local', 'core.autocrlf', 'true')
_write(b'1\r\n2\r\n\r\n\r\n\r\n') _write(b'1\r\n2\r\n\r\n\r\n\r\n')

View file

@ -12,10 +12,10 @@ import six
from pre_commit import git from pre_commit import git
from pre_commit.store import _get_default_directory from pre_commit.store import _get_default_directory
from pre_commit.store import Store from pre_commit.store import Store
from pre_commit.util import cmd_output
from pre_commit.util import rmtree from pre_commit.util import rmtree
from testing.fixtures import git_dir from testing.fixtures import git_dir
from testing.util import cwd from testing.util import cwd
from testing.util import git_commit
def test_our_session_fixture_works(): def test_our_session_fixture_works():
@ -90,9 +90,9 @@ def test_does_not_recreate_if_directory_already_exists(store):
def test_clone(store, tempdir_factory, log_info_mock): def test_clone(store, tempdir_factory, log_info_mock):
path = git_dir(tempdir_factory) path = git_dir(tempdir_factory)
with cwd(path): with cwd(path):
cmd_output('git', 'commit', '--allow-empty', '-m', 'foo') git_commit('foo')
rev = git.head_rev(path) rev = git.head_rev(path)
cmd_output('git', 'commit', '--allow-empty', '-m', 'bar') git_commit('bar')
ret = store.clone(path, rev) ret = store.clone(path, rev)
# Should have printed some stuff # Should have printed some stuff