Various cleanup.

This commit is contained in:
Anthony Sottile 2014-06-06 07:38:25 -07:00
parent bf912cfebb
commit 01b557c497
12 changed files with 85 additions and 37 deletions

View file

@ -2,23 +2,13 @@
sha: 7c003425b35fff516c0ee88f4040c8c208d474bd
hooks:
- id: trailing-whitespace
files: \.(js|rb|md|py|sh|txt|yaml|yml)$
- id: end-of-file-fixer
files: \.(js|rb|md|py|sh|txt|yaml|yml)$
- id: check-yaml
files: \.(yaml|yml)$
- id: debug-statements
files: \.py$
- id: name-tests-test
files: tests/.+\.py$
- id: flake8
files: \.py$
args:
- --max-line-length=131
- repo: git@github.com:pre-commit/pre-commit
sha: 96174deac671b451ee2a3fbdc647ad9606415e15
hooks:
- id: validate_config
files: ^\.pre-commit-config.yaml$
- id: validate_manifest
files: ^hooks.yaml$

View file

@ -29,7 +29,9 @@ logger = logging.getLogger('pre_commit')
def install(runner):
"""Install the pre-commit hooks."""
pre_commit_file = pkg_resources.resource_filename('pre_commit', 'resources/pre-commit.sh')
pre_commit_file = pkg_resources.resource_filename(
'pre_commit', 'resources/pre-commit.sh',
)
with open(runner.pre_commit_path, 'w') as pre_commit_file_obj:
pre_commit_file_obj.write(open(pre_commit_file).read())

View file

@ -29,7 +29,9 @@ def is_in_merge_conflict():
def parse_merge_msg_for_conflicts(merge_msg):
# Conflicted files start with tabs
return [
line.strip() for line in merge_msg.splitlines() if line.startswith('\t')
line.strip()
for line in merge_msg.splitlines()
if line.startswith('\t')
]

View file

@ -9,16 +9,19 @@ from pre_commit.languages import system
# # Use None for no environment
# ENVIRONMENT_DIR = 'foo_env'
#
# def install_environment(repo_cmd_runner):
# def install_environment(repo_cmd_runner, version='default'):
# """Installs a repository in the given repository. Note that the current
# working directory will already be inside the repository.
#
# Args:
# repo_cmd_runner - `PrefixedCommandRunner` bound to the repository.
# version - A version specified in the hook configuration or
# 'default'.
# """
#
# def run_hook(repo_cmd_runner, hook, file_args):
# """Runs a hook and returns the returncode and output of running that hook.
# """Runs a hook and returns the returncode and output of running that
# hook.
#
# Args:
# repo_cmd_runner - `PrefixedCommandRunner` bound to the repository.

View file

@ -26,8 +26,8 @@ def get_hook_message(
>>> print_hook_message('start', end_len=6)
start...............................................................
# Print `start` followed by dots with the end message colored if coloring is
# specified and a newline afterwards
# Print `start` followed by dots with the end message colored if coloring
# is specified and a newline afterwards
>>> print_hook_message(
'start',
end_msg='end',

View file

@ -42,7 +42,12 @@ class PrefixedCommandRunner(object):
will run ['/tmp/foo/foo.sh', 'bar', 'baz']
"""
def __init__(self, prefix_dir, popen=subprocess.Popen, makedirs=os.makedirs):
def __init__(
self,
prefix_dir,
popen=subprocess.Popen,
makedirs=os.makedirs
):
self.prefix_dir = prefix_dir.rstrip(os.sep) + os.sep
self.__popen = popen
self.__makedirs = makedirs

View file

@ -35,9 +35,13 @@ def run(argv):
'--no-stash', default=False, action='store_true',
help='Use this option to prevent auto stashing of unstaged files.',
)
run_parser.add_argument('--verbose', '-v', action='store_true', default=False)
run_parser.add_argument(
'--verbose', '-v', action='store_true', default=False,
)
help = subparsers.add_parser('help', help='Show help for a specific command.')
help = subparsers.add_parser(
'help', help='Show help for a specific command.'
)
help.add_argument('help_cmd', nargs='?', help='Command to show help for.')
# Argparse doesn't really provide a way to use a `default` subparser

View file

@ -4,7 +4,10 @@ from setuptools import setup
setup(
name='pre_commit',
description='A framework for managing and maintaining multi-language pre-commit hooks.',
description=(
'A framework for managing and maintaining multi-language pre-commit '
'hooks.'
),
url='https://github.com/pre-commit/pre-commit',
version='0.0.0',

View file

@ -44,7 +44,9 @@ def test_raises_for_invalid_yaml_file(noop_validator):
def test_raises_for_failing_schema(array_validator):
with pytest.raises(ValueError):
array_validator(get_resource_path('valid_yaml_but_invalid_manifest.yaml'))
array_validator(
get_resource_path('valid_yaml_but_invalid_manifest.yaml')
)
def test_passes_array_schema(array_validator):

View file

@ -31,7 +31,9 @@ def test_install_pre_commit(empty_git_dir):
assert ret == 0
assert os.path.exists(runner.pre_commit_path)
pre_commit_contents = open(runner.pre_commit_path).read()
pre_commit_sh = pkg_resources.resource_filename('pre_commit', 'resources/pre-commit.sh')
pre_commit_sh = pkg_resources.resource_filename(
'pre_commit', 'resources/pre-commit.sh',
)
expected_contents = open(pre_commit_sh).read()
assert pre_commit_contents == expected_contents
stat_result = os.stat(runner.pre_commit_path)
@ -132,7 +134,9 @@ def test_removes_defaults(out_of_date_repo, runner_with_mocked_store):
assert 'expected_return_value' not in ret['hooks'][0]
def test_autoupdate_out_of_date_repo(out_of_date_repo, mock_out_store_directory):
def test_autoupdate_out_of_date_repo(
out_of_date_repo, mock_out_store_directory
):
before = open(C.CONFIG_FILE).read()
runner = Runner(out_of_date_repo.python_hooks_repo)
ret = commands.autoupdate(runner)
@ -152,7 +156,10 @@ def hook_disappearing_repo(python_hooks_repo):
config_wrapped = apply_defaults([config], CONFIG_JSON_SCHEMA)
validate_config_extra(config_wrapped)
config = config_wrapped[0]
shutil.copy(get_resource_path('manifest_without_foo.yaml'), C.MANIFEST_FILE)
shutil.copy(
get_resource_path('manifest_without_foo.yaml'),
C.MANIFEST_FILE,
)
local['git']['add', '.']()
local['git']['commit', '-m', 'Remove foo']()
@ -167,14 +174,18 @@ def hook_disappearing_repo(python_hooks_repo):
)
def test_hook_disppearing_repo_raises(hook_disappearing_repo, runner_with_mocked_store):
def test_hook_disppearing_repo_raises(
hook_disappearing_repo, runner_with_mocked_store
):
with pytest.raises(commands.RepositoryCannotBeUpdatedError):
commands._update_repository(
hook_disappearing_repo.repo_config, runner_with_mocked_store,
)
def test_autoupdate_hook_disappearing_repo(hook_disappearing_repo, mock_out_store_directory):
def test_autoupdate_hook_disappearing_repo(
hook_disappearing_repo, mock_out_store_directory
):
before = open(C.CONFIG_FILE).read()
runner = Runner(hook_disappearing_repo.python_hooks_repo)
ret = commands.autoupdate(runner)
@ -206,7 +217,13 @@ def get_write_mock_output(write_mock):
return ''.join(call[0][0] for call in write_mock.call_args_list)
def _get_opts(all_files=False, color=False, verbose=False, hook=None, no_stash=False):
def _get_opts(
all_files=False,
color=False,
verbose=False,
hook=None,
no_stash=False,
):
return auto_namedtuple(
all_files=all_files,
color=color,
@ -234,7 +251,9 @@ def _test_run(repo, options, expected_outputs, expected_ret, stage):
assert expected_output_part in printed
def test_run_all_hooks_failing(repo_with_failing_hook, mock_out_store_directory):
def test_run_all_hooks_failing(
repo_with_failing_hook, mock_out_store_directory
):
_test_run(
repo_with_failing_hook,
{},
@ -262,7 +281,14 @@ def test_run_all_hooks_failing(repo_with_failing_hook, mock_out_store_directory)
({}, ('Bash hook', '(no files to check)', 'Skipped'), 0, False),
)
)
def test_run(repo_with_passing_hook, options, outputs, expected_ret, stage, mock_out_store_directory):
def test_run(
repo_with_passing_hook,
options,
outputs,
expected_ret,
stage,
mock_out_store_directory,
):
_test_run(repo_with_passing_hook, options, outputs, expected_ret, stage)
@ -275,7 +301,13 @@ def test_run(repo_with_passing_hook, options, outputs, expected_ret, stage, mock
(False, False, True),
),
)
def test_no_stash(repo_with_passing_hook, no_stash, all_files, expect_stash, mock_out_store_directory):
def test_no_stash(
repo_with_passing_hook,
no_stash,
all_files,
expect_stash,
mock_out_store_directory,
):
stage_a_file()
# Make unstaged changes
with open('foo.py', 'w') as foo_file:
@ -347,11 +379,15 @@ def test_skip_hook(repo_with_passing_hook, mock_out_store_directory):
assert msg in printed
def test_hook_id_not_in_non_verbose_output(repo_with_passing_hook, mock_out_store_directory):
def test_hook_id_not_in_non_verbose_output(
repo_with_passing_hook, mock_out_store_directory
):
ret, printed = _do_run(repo_with_passing_hook, _get_opts(verbose=False))
assert '[bash_hook]' not in printed
def test_hook_id_in_verbose_output(repo_with_passing_hook, mock_out_store_directory):
def test_hook_id_in_verbose_output(
repo_with_passing_hook, mock_out_store_directory
):
ret, printed = _do_run(repo_with_passing_hook, _get_opts(verbose=True))
assert '[bash_hook] Bash hook' in printed

View file

@ -56,7 +56,9 @@ def test_init_normalizes_path_endings(input, expected_prefix):
def test_run_substitutes_prefix(popen_mock, makedirs_mock):
instance = PrefixedCommandRunner('prefix', popen=popen_mock, makedirs=makedirs_mock)
instance = PrefixedCommandRunner(
'prefix', popen=popen_mock, makedirs=makedirs_mock,
)
ret = instance.run(['{prefix}bar', 'baz'], retcode=None)
popen_mock.assert_called_once_with(
['prefix/bar', 'baz'],
@ -104,7 +106,9 @@ def test_from_command_runner(prefix, path_end, expected_output):
def test_from_command_runner_preserves_popen(popen_mock, makedirs_mock):
first = PrefixedCommandRunner('foo', popen=popen_mock, makedirs=makedirs_mock)
first = PrefixedCommandRunner(
'foo', popen=popen_mock, makedirs=makedirs_mock,
)
second = PrefixedCommandRunner.from_command_runner(first, 'bar')
second.run(['foo/bar/baz'], retcode=None)
popen_mock.assert_called_once_with(

View file

@ -23,6 +23,3 @@ deps =
sphinx
changedir = docs
commands = sphinx-build -b html -d build/doctrees source build/html
[flake8]
max-line-length=131