mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Use asottile/add-trailing-comma
This commit is contained in:
parent
1a07a24d13
commit
0c70fa4229
32 changed files with 74 additions and 70 deletions
|
|
@ -21,3 +21,7 @@
|
||||||
hooks:
|
hooks:
|
||||||
- id: reorder-python-imports
|
- id: reorder-python-imports
|
||||||
language_version: python2.7
|
language_version: python2.7
|
||||||
|
- repo: https://github.com/asottile/add-trailing-comma
|
||||||
|
sha: v0.3.0
|
||||||
|
hooks:
|
||||||
|
- id: add-trailing-comma
|
||||||
|
|
|
||||||
|
|
@ -20,18 +20,18 @@ def bool_errcheck(result, func, args):
|
||||||
|
|
||||||
GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(
|
GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(
|
||||||
("GetStdHandle", windll.kernel32),
|
("GetStdHandle", windll.kernel32),
|
||||||
((1, "nStdHandle"), )
|
((1, "nStdHandle"), ),
|
||||||
)
|
)
|
||||||
|
|
||||||
GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(
|
GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(
|
||||||
("GetConsoleMode", windll.kernel32),
|
("GetConsoleMode", windll.kernel32),
|
||||||
((1, "hConsoleHandle"), (2, "lpMode"))
|
((1, "hConsoleHandle"), (2, "lpMode")),
|
||||||
)
|
)
|
||||||
GetConsoleMode.errcheck = bool_errcheck
|
GetConsoleMode.errcheck = bool_errcheck
|
||||||
|
|
||||||
SetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, DWORD)(
|
SetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, DWORD)(
|
||||||
("SetConsoleMode", windll.kernel32),
|
("SetConsoleMode", windll.kernel32),
|
||||||
((1, "hConsoleHandle"), (1, "dwMode"))
|
((1, "hConsoleHandle"), (1, "dwMode")),
|
||||||
)
|
)
|
||||||
SetConsoleMode.errcheck = bool_errcheck
|
SetConsoleMode.errcheck = bool_errcheck
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ def _update_repo(repo_config, runner, tags_only):
|
||||||
if hooks_missing:
|
if hooks_missing:
|
||||||
raise RepositoryCannotBeUpdatedError(
|
raise RepositoryCannotBeUpdatedError(
|
||||||
'Cannot update because the tip of master is missing these hooks:\n'
|
'Cannot update because the tip of master is missing these hooks:\n'
|
||||||
'{}'.format(', '.join(sorted(hooks_missing)))
|
'{}'.format(', '.join(sorted(hooks_missing))),
|
||||||
)
|
)
|
||||||
|
|
||||||
return new_config
|
return new_config
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ def install(
|
||||||
'Running in migration mode with existing hooks at {}\n'
|
'Running in migration mode with existing hooks at {}\n'
|
||||||
'Use -f to use only pre-commit.'.format(
|
'Use -f to use only pre-commit.'.format(
|
||||||
legacy_path,
|
legacy_path,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
with io.open(hook_path, 'w') as pre_commit_file_obj:
|
with io.open(hook_path, 'w') as pre_commit_file_obj:
|
||||||
|
|
|
||||||
|
|
@ -235,7 +235,7 @@ def run(runner, args, environ=os.environ):
|
||||||
logger.error(
|
logger.error(
|
||||||
'Your .pre-commit-config.yaml is unstaged.\n'
|
'Your .pre-commit-config.yaml is unstaged.\n'
|
||||||
'`git add .pre-commit-config.yaml` to fix this.\n'
|
'`git add .pre-commit-config.yaml` to fix this.\n'
|
||||||
'Run pre-commit with --allow-unstaged-config to silence this.'
|
'Run pre-commit with --allow-unstaged-config to silence this.',
|
||||||
)
|
)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ def get_root():
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
raise FatalError(
|
raise FatalError(
|
||||||
'git failed. Is it installed, and are you in a Git repository '
|
'git failed. Is it installed, and are you in a Git repository '
|
||||||
'directory?'
|
'directory?',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ def get_staged_files():
|
||||||
return cmd_output(
|
return cmd_output(
|
||||||
'git', 'diff', '--staged', '--name-only', '--no-ext-diff',
|
'git', 'diff', '--staged', '--name-only', '--no-ext-diff',
|
||||||
# Everything except for D
|
# Everything except for D
|
||||||
'--diff-filter=ACMRTUXB'
|
'--diff-filter=ACMRTUXB',
|
||||||
)[1].splitlines()
|
)[1].splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -130,5 +130,5 @@ def check_for_cygwin_mismatch():
|
||||||
' - git {}\n'.format(
|
' - git {}\n'.format(
|
||||||
exe_type[is_cygwin_python],
|
exe_type[is_cygwin_python],
|
||||||
exe_type[is_cygwin_git],
|
exe_type[is_cygwin_git],
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ def md5(s): # pragma: windows no cover
|
||||||
|
|
||||||
def docker_tag(repo_cmd_runner): # pragma: windows no cover
|
def docker_tag(repo_cmd_runner): # pragma: windows no cover
|
||||||
return 'pre-commit-{}'.format(
|
return 'pre-commit-{}'.format(
|
||||||
md5(os.path.basename(repo_cmd_runner.path()))
|
md5(os.path.basename(repo_cmd_runner.path())),
|
||||||
).lower()
|
).lower()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -92,7 +92,7 @@ def run_hook(repo_cmd_runner, hook, file_args): # pragma: windows no cover
|
||||||
'-v', '{}:/src:rw'.format(os.getcwd()),
|
'-v', '{}:/src:rw'.format(os.getcwd()),
|
||||||
'--workdir', '/src',
|
'--workdir', '/src',
|
||||||
'--entrypoint', entry_executable,
|
'--entrypoint', entry_executable,
|
||||||
docker_tag(repo_cmd_runner)
|
docker_tag(repo_cmd_runner),
|
||||||
) + cmd_rest
|
) + cmd_rest
|
||||||
|
|
||||||
return xargs(cmd, file_args)
|
return xargs(cmd, file_args)
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ def install_environment(repo_cmd_runner, version, additional_dependencies):
|
||||||
with clean_path_on_failure(repo_cmd_runner.path(directory)):
|
with clean_path_on_failure(repo_cmd_runner.path(directory)):
|
||||||
venv_cmd = [
|
venv_cmd = [
|
||||||
sys.executable, '-m', 'virtualenv',
|
sys.executable, '-m', 'virtualenv',
|
||||||
'{{prefix}}{}'.format(directory)
|
'{{prefix}}{}'.format(directory),
|
||||||
]
|
]
|
||||||
if version != 'default':
|
if version != 'default':
|
||||||
venv_cmd.extend(['-p', norm_version(version)])
|
venv_cmd.extend(['-p', norm_version(version)])
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ def _install_rbenv(
|
||||||
# directory
|
# directory
|
||||||
"export GEM_HOME='{directory}/gems'\n"
|
"export GEM_HOME='{directory}/gems'\n"
|
||||||
'export PATH="$GEM_HOME/bin:$PATH"\n'
|
'export PATH="$GEM_HOME/bin:$PATH"\n'
|
||||||
'\n'.format(directory=repo_cmd_runner.path(directory))
|
'\n'.format(directory=repo_cmd_runner.path(directory)),
|
||||||
)
|
)
|
||||||
|
|
||||||
# If we aren't using the system ruby, add a version here
|
# If we aren't using the system ruby, add a version here
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class LoggingHandler(logging.Handler):
|
||||||
self.use_color,
|
self.use_color,
|
||||||
) + ' ',
|
) + ' ',
|
||||||
record.getMessage(),
|
record.getMessage(),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ def _add_color_option(parser):
|
||||||
def _add_config_option(parser):
|
def _add_config_option(parser):
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-c', '--config', default='.pre-commit-config.yaml',
|
'-c', '--config', default='.pre-commit-config.yaml',
|
||||||
help='Path to alternate config file'
|
help='Path to alternate config file',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -228,11 +228,11 @@ def main(argv=None):
|
||||||
return sample_config()
|
return sample_config()
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError(
|
raise NotImplementedError(
|
||||||
'Command {} not implemented.'.format(args.command)
|
'Command {} not implemented.'.format(args.command),
|
||||||
)
|
)
|
||||||
|
|
||||||
raise AssertionError(
|
raise AssertionError(
|
||||||
'Command {} failed to exit with a returncode'.format(args.command)
|
'Command {} failed to exit with a returncode'.format(args.command),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ REPOS = (
|
||||||
|
|
||||||
|
|
||||||
RESOURCES_DIR = os.path.abspath(
|
RESOURCES_DIR = os.path.abspath(
|
||||||
os.path.join(os.path.dirname(__file__), 'resources')
|
os.path.join(os.path.dirname(__file__), 'resources'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class Manifest(object):
|
||||||
'If `pre-commit autoupdate` does not silence this warning '
|
'If `pre-commit autoupdate` does not silence this warning '
|
||||||
'consider making an issue / pull request.'.format(
|
'consider making an issue / pull request.'.format(
|
||||||
self.repo_url, C.MANIFEST_FILE_LEGACY, C.MANIFEST_FILE,
|
self.repo_url, C.MANIFEST_FILE_LEGACY, C.MANIFEST_FILE,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
return load_manifest(legacy_path)
|
return load_manifest(legacy_path)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ def get_hook_message(
|
||||||
raise ValueError('Expected one of (`end_msg`, `end_len`)')
|
raise ValueError('Expected one of (`end_msg`, `end_len`)')
|
||||||
if end_msg is not None and (end_color is None or use_color is None):
|
if end_msg is not None and (end_color is None or use_color is None):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'`end_color` and `use_color` are required with `end_msg`'
|
'`end_color` and `use_color` are required with `end_msg`',
|
||||||
)
|
)
|
||||||
|
|
||||||
if end_len:
|
if end_len:
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class PrefixedCommandRunner(object):
|
||||||
self,
|
self,
|
||||||
prefix_dir,
|
prefix_dir,
|
||||||
popen=subprocess.Popen,
|
popen=subprocess.Popen,
|
||||||
makedirs=os.makedirs
|
makedirs=os.makedirs,
|
||||||
):
|
):
|
||||||
self.prefix_dir = prefix_dir.rstrip(os.sep) + os.sep
|
self.prefix_dir = prefix_dir.rstrip(os.sep) + os.sep
|
||||||
self.__popen = popen
|
self.__popen = popen
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ def _install_all(venvs, repo_url):
|
||||||
|
|
||||||
if need_installed:
|
if need_installed:
|
||||||
logger.info(
|
logger.info(
|
||||||
'Installing environment for {}.'.format(repo_url)
|
'Installing environment for {}.'.format(repo_url),
|
||||||
)
|
)
|
||||||
logger.info('Once installed this environment will be reused.')
|
logger.info('Once installed this environment will be reused.')
|
||||||
logger.info('This may take a few minutes...')
|
logger.info('This may take a few minutes...')
|
||||||
|
|
@ -102,7 +102,7 @@ def _validate_minimum_version(hook):
|
||||||
'version {} is installed. '
|
'version {} is installed. '
|
||||||
'Perhaps run `pip install --upgrade pre-commit`.'.format(
|
'Perhaps run `pip install --upgrade pre-commit`.'.format(
|
||||||
hook['id'], hook_version, C.VERSION_PARSED,
|
hook['id'], hook_version, C.VERSION_PARSED,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
exit(1)
|
exit(1)
|
||||||
return hook
|
return hook
|
||||||
|
|
@ -147,7 +147,7 @@ class Repository(object):
|
||||||
'Typo? Perhaps it is introduced in a newer version? '
|
'Typo? Perhaps it is introduced in a newer version? '
|
||||||
'Often `pre-commit autoupdate` fixes this.'.format(
|
'Often `pre-commit autoupdate` fixes this.'.format(
|
||||||
hook['id'], self.repo_config['repo'],
|
hook['id'], self.repo_config['repo'],
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ def _check_conditional(self, dct):
|
||||||
cond_key=self.condition_key,
|
cond_key=self.condition_key,
|
||||||
op=op,
|
op=op,
|
||||||
cond_val=cond_val,
|
cond_val=cond_val,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ def staged_files_only(cmd_runner):
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
'Stashed changes conflicted with hook auto-fixes... '
|
'Stashed changes conflicted with hook auto-fixes... '
|
||||||
'Rolling back fixes...'
|
'Rolling back fixes...',
|
||||||
)
|
)
|
||||||
# We failed to apply the patch, presumably due to fixes made
|
# We failed to apply the patch, presumably due to fixes made
|
||||||
# by hooks.
|
# by hooks.
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class Store(object):
|
||||||
with io.open(os.path.join(self.directory, 'README'), 'w') as readme:
|
with io.open(os.path.join(self.directory, 'README'), 'w') as readme:
|
||||||
readme.write(
|
readme.write(
|
||||||
'This directory is maintained by the pre-commit project.\n'
|
'This directory is maintained by the pre-commit project.\n'
|
||||||
'Learn more: https://github.com/pre-commit/pre-commit\n'
|
'Learn more: https://github.com/pre-commit/pre-commit\n',
|
||||||
)
|
)
|
||||||
|
|
||||||
def _write_sqlite_db(self):
|
def _write_sqlite_db(self):
|
||||||
|
|
@ -68,7 +68,7 @@ class Store(object):
|
||||||
' ref CHAR(255) NOT NULL,'
|
' ref CHAR(255) NOT NULL,'
|
||||||
' path CHAR(255) NOT NULL,'
|
' path CHAR(255) NOT NULL,'
|
||||||
' PRIMARY KEY (repo, ref)'
|
' PRIMARY KEY (repo, ref)'
|
||||||
');'
|
');',
|
||||||
)
|
)
|
||||||
|
|
||||||
# Atomic file move
|
# Atomic file move
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ class CalledProcessError(RuntimeError):
|
||||||
if maybe_text:
|
if maybe_text:
|
||||||
output.append(
|
output.append(
|
||||||
b'\n ' +
|
b'\n ' +
|
||||||
five.to_bytes(maybe_text).replace(b'\n', b'\n ')
|
five.to_bytes(maybe_text).replace(b'\n', b'\n '),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
output.append(b'(none)')
|
output.append(b'(none)')
|
||||||
|
|
@ -134,8 +134,8 @@ class CalledProcessError(RuntimeError):
|
||||||
'Command: {!r}\n'
|
'Command: {!r}\n'
|
||||||
'Return code: {}\n'
|
'Return code: {}\n'
|
||||||
'Expected return code: {}\n'.format(
|
'Expected return code: {}\n'.format(
|
||||||
self.cmd, self.returncode, self.expected_returncode
|
self.cmd, self.returncode, self.expected_returncode,
|
||||||
)
|
),
|
||||||
),
|
),
|
||||||
b'Output: ', output[0], b'\n',
|
b'Output: ', output[0], b'\n',
|
||||||
b'Errors: ', output[1], b'\n',
|
b'Errors: ', output[1], b'\n',
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ def config_with_local_hooks():
|
||||||
('entry', 'DO NOT COMMIT'),
|
('entry', 'DO NOT COMMIT'),
|
||||||
('language', 'pcre'),
|
('language', 'pcre'),
|
||||||
('files', '^(.*)$'),
|
('files', '^(.*)$'),
|
||||||
))])
|
))]),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ def cmd_output_mocked_pre_commit_home(*args, **kwargs):
|
||||||
|
|
||||||
skipif_cant_run_docker = pytest.mark.skipif(
|
skipif_cant_run_docker = pytest.mark.skipif(
|
||||||
docker_is_running() is False,
|
docker_is_running() is False,
|
||||||
reason='Docker isn\'t running or can\'t be accessed'
|
reason='Docker isn\'t running or can\'t be accessed',
|
||||||
)
|
)
|
||||||
|
|
||||||
skipif_slowtests_false = pytest.mark.skipif(
|
skipif_slowtests_false = pytest.mark.skipif(
|
||||||
|
|
@ -44,7 +44,7 @@ skipif_slowtests_false = pytest.mark.skipif(
|
||||||
|
|
||||||
skipif_cant_run_swift = pytest.mark.skipif(
|
skipif_cant_run_swift = pytest.mark.skipif(
|
||||||
parse_shebang.find_executable('swift') is None,
|
parse_shebang.find_executable('swift') is None,
|
||||||
reason='swift isn\'t installed or can\'t be found'
|
reason='swift isn\'t installed or can\'t be found',
|
||||||
)
|
)
|
||||||
|
|
||||||
xfailif_windows_no_ruby = pytest.mark.xfail(
|
xfailif_windows_no_ruby = pytest.mark.xfail(
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ def test_validate_manifest_main(args, expected_output):
|
||||||
}],
|
}],
|
||||||
True,
|
True,
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
def test_valid_manifests(manifest_obj, expected):
|
def test_valid_manifests(manifest_obj, expected):
|
||||||
ret = is_valid_according_to_schema(manifest_obj, MANIFEST_SCHEMA)
|
ret = is_valid_according_to_schema(manifest_obj, MANIFEST_SCHEMA)
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ def test_out_of_date_repo(out_of_date_repo, runner_with_mocked_store):
|
||||||
|
|
||||||
|
|
||||||
def test_autoupdate_out_of_date_repo(
|
def test_autoupdate_out_of_date_repo(
|
||||||
out_of_date_repo, in_tmpdir, mock_out_store_directory
|
out_of_date_repo, in_tmpdir, mock_out_store_directory,
|
||||||
):
|
):
|
||||||
# Write out the config
|
# Write out the config
|
||||||
config = make_config_from_repo(
|
config = make_config_from_repo(
|
||||||
|
|
@ -181,7 +181,7 @@ def hook_disappearing_repo(tempdir_factory):
|
||||||
|
|
||||||
|
|
||||||
def test_hook_disppearing_repo_raises(
|
def test_hook_disppearing_repo_raises(
|
||||||
hook_disappearing_repo, runner_with_mocked_store
|
hook_disappearing_repo, runner_with_mocked_store,
|
||||||
):
|
):
|
||||||
config = make_config_from_repo(
|
config = make_config_from_repo(
|
||||||
hook_disappearing_repo.path,
|
hook_disappearing_repo.path,
|
||||||
|
|
@ -193,7 +193,7 @@ def test_hook_disppearing_repo_raises(
|
||||||
|
|
||||||
|
|
||||||
def test_autoupdate_hook_disappearing_repo(
|
def test_autoupdate_hook_disappearing_repo(
|
||||||
hook_disappearing_repo, in_tmpdir, mock_out_store_directory
|
hook_disappearing_repo, in_tmpdir, mock_out_store_directory,
|
||||||
):
|
):
|
||||||
config = make_config_from_repo(
|
config = make_config_from_repo(
|
||||||
hook_disappearing_repo.path,
|
hook_disappearing_repo.path,
|
||||||
|
|
@ -222,7 +222,7 @@ def test_autoupdate_local_hooks(tempdir_factory):
|
||||||
|
|
||||||
|
|
||||||
def test_autoupdate_local_hooks_with_out_of_date_repo(
|
def test_autoupdate_local_hooks_with_out_of_date_repo(
|
||||||
out_of_date_repo, in_tmpdir, mock_out_store_directory
|
out_of_date_repo, in_tmpdir, mock_out_store_directory,
|
||||||
):
|
):
|
||||||
stale_config = make_config_from_repo(
|
stale_config = make_config_from_repo(
|
||||||
out_of_date_repo.path, sha=out_of_date_repo.original_sha, check=False,
|
out_of_date_repo.path, sha=out_of_date_repo.original_sha, check=False,
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ NORMAL_PRE_COMMIT_RUN = re.compile(
|
||||||
r'Bash hook\.+Passed\r?\n'
|
r'Bash hook\.+Passed\r?\n'
|
||||||
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
||||||
FILES_CHANGED +
|
FILES_CHANGED +
|
||||||
r' create mode 100644 foo\r?\n$'
|
r' create mode 100644 foo\r?\n$',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -259,7 +259,7 @@ FAILING_PRE_COMMIT_RUN = re.compile(
|
||||||
r'\r?\n'
|
r'\r?\n'
|
||||||
r'Fail\r?\n'
|
r'Fail\r?\n'
|
||||||
r'foo\r?\n'
|
r'foo\r?\n'
|
||||||
r'\r?\n$'
|
r'\r?\n$',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -277,7 +277,7 @@ EXISTING_COMMIT_RUN = re.compile(
|
||||||
r'^legacy hook\r?\n'
|
r'^legacy hook\r?\n'
|
||||||
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
||||||
FILES_CHANGED +
|
FILES_CHANGED +
|
||||||
r' create mode 100644 baz\r?\n$'
|
r' create mode 100644 baz\r?\n$',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -332,7 +332,7 @@ def test_install_existing_hook_no_overwrite_idempotent(tempdir_factory):
|
||||||
FAIL_OLD_HOOK = re.compile(
|
FAIL_OLD_HOOK = re.compile(
|
||||||
r'fail!\r?\n'
|
r'fail!\r?\n'
|
||||||
r'\[INFO\] Initializing environment for .+\.\r?\n'
|
r'\[INFO\] Initializing environment for .+\.\r?\n'
|
||||||
r'Bash hook\.+Passed\r?\n'
|
r'Bash hook\.+Passed\r?\n',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -448,7 +448,7 @@ PRE_INSTALLED = re.compile(
|
||||||
r'Bash hook\.+Passed\r?\n'
|
r'Bash hook\.+Passed\r?\n'
|
||||||
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
r'\[master [a-f0-9]{7}\] Commit!\r?\n' +
|
||||||
FILES_CHANGED +
|
FILES_CHANGED +
|
||||||
r' create mode 100644 foo\r?\n$'
|
r' create mode 100644 foo\r?\n$',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,7 +220,7 @@ def test_show_diff_on_failure(
|
||||||
True,
|
True,
|
||||||
),
|
),
|
||||||
({}, (b'Bash hook', b'(no files to check)', b'Skipped'), 0, False),
|
({}, (b'Bash hook', b'(no files to check)', b'Skipped'), 0, False),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
def test_run(
|
def test_run(
|
||||||
cap_out,
|
cap_out,
|
||||||
|
|
@ -259,7 +259,7 @@ def test_run_output_logfile(
|
||||||
git_path, {},
|
git_path, {},
|
||||||
expected_output,
|
expected_output,
|
||||||
expected_ret=1,
|
expected_ret=1,
|
||||||
stage=True
|
stage=True,
|
||||||
)
|
)
|
||||||
logfile_path = os.path.join(git_path, 'test.log')
|
logfile_path = os.path.join(git_path, 'test.log')
|
||||||
assert os.path.exists(logfile_path)
|
assert os.path.exists(logfile_path)
|
||||||
|
|
@ -301,7 +301,7 @@ def test_always_run_alt_config(
|
||||||
(b'Bash hook', b'Passed'),
|
(b'Bash hook', b'Passed'),
|
||||||
0,
|
0,
|
||||||
stage=False,
|
stage=False,
|
||||||
config_file=alt_config_file
|
config_file=alt_config_file,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -311,7 +311,7 @@ def test_always_run_alt_config(
|
||||||
('master', 'master', False),
|
('master', 'master', False),
|
||||||
('master', '', True),
|
('master', '', True),
|
||||||
('', 'master', True),
|
('', 'master', True),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
def test_origin_source_error_msg(
|
def test_origin_source_error_msg(
|
||||||
repo_with_passing_hook, origin, source, expect_failure,
|
repo_with_passing_hook, origin, source, expect_failure,
|
||||||
|
|
@ -588,7 +588,7 @@ def test_lots_of_files(mock_out_store_directory, tempdir_factory):
|
||||||
('commit', [], ['commit'], [b'hook 1', b'hook 2']),
|
('commit', [], ['commit'], [b'hook 1', b'hook 2']),
|
||||||
('commit', ['push'], ['commit'], [b'', b'hook 2']),
|
('commit', ['push'], ['commit'], [b'', b'hook 2']),
|
||||||
('commit', ['commit'], ['push'], [b'hook 1', b'']),
|
('commit', ['commit'], ['push'], [b'hook 1', b'']),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
def test_local_hook_for_stages(
|
def test_local_hook_for_stages(
|
||||||
cap_out,
|
cap_out,
|
||||||
|
|
@ -606,15 +606,15 @@ def test_local_hook_for_stages(
|
||||||
('entry', 'python -m flake8.__main__'),
|
('entry', 'python -m flake8.__main__'),
|
||||||
('language', 'system'),
|
('language', 'system'),
|
||||||
('files', r'\.py$'),
|
('files', r'\.py$'),
|
||||||
('stages', stage_for_first_hook)
|
('stages', stage_for_first_hook),
|
||||||
)), OrderedDict((
|
)), OrderedDict((
|
||||||
('id', 'do_not_commit'),
|
('id', 'do_not_commit'),
|
||||||
('name', 'hook 2'),
|
('name', 'hook 2'),
|
||||||
('entry', 'DO NOT COMMIT'),
|
('entry', 'DO NOT COMMIT'),
|
||||||
('language', 'pcre'),
|
('language', 'pcre'),
|
||||||
('files', '^(.*)$'),
|
('files', '^(.*)$'),
|
||||||
('stages', stage_for_second_hook)
|
('stages', stage_for_second_hook),
|
||||||
))))
|
)))),
|
||||||
))
|
))
|
||||||
add_config_to_repo(repo_with_passing_hook, config)
|
add_config_to_repo(repo_with_passing_hook, config)
|
||||||
|
|
||||||
|
|
@ -628,7 +628,7 @@ def test_local_hook_for_stages(
|
||||||
{'hook_stage': hook_stage},
|
{'hook_stage': hook_stage},
|
||||||
expected_outputs=expected_output,
|
expected_outputs=expected_output,
|
||||||
expected_ret=0,
|
expected_ret=0,
|
||||||
stage=False
|
stage=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -649,7 +649,7 @@ def test_local_hook_passes(
|
||||||
('entry', 'DO NOT COMMIT'),
|
('entry', 'DO NOT COMMIT'),
|
||||||
('language', 'pcre'),
|
('language', 'pcre'),
|
||||||
('files', '^(.*)$'),
|
('files', '^(.*)$'),
|
||||||
))))
|
)))),
|
||||||
))
|
))
|
||||||
add_config_to_repo(repo_with_passing_hook, config)
|
add_config_to_repo(repo_with_passing_hook, config)
|
||||||
|
|
||||||
|
|
@ -678,7 +678,7 @@ def test_local_hook_fails(
|
||||||
('entry', 'sh -c "! grep -iI todo $@" --'),
|
('entry', 'sh -c "! grep -iI todo $@" --'),
|
||||||
('language', 'system'),
|
('language', 'system'),
|
||||||
('files', ''),
|
('files', ''),
|
||||||
))])
|
))]),
|
||||||
))
|
))
|
||||||
add_config_to_repo(repo_with_passing_hook, config)
|
add_config_to_repo(repo_with_passing_hook, config)
|
||||||
|
|
||||||
|
|
@ -770,7 +770,7 @@ def test_files_running_subdir(
|
||||||
(False, [], b''),
|
(False, [], b''),
|
||||||
(True, ['some', 'args'], b'some args foo.py'),
|
(True, ['some', 'args'], b'some args foo.py'),
|
||||||
(False, ['some', 'args'], b'some args'),
|
(False, ['some', 'args'], b'some args'),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
def test_pass_filenames(
|
def test_pass_filenames(
|
||||||
cap_out, repo_with_passing_hook, mock_out_store_directory,
|
cap_out, repo_with_passing_hook, mock_out_store_directory,
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,6 @@ from pre_commit.util import CalledProcessError
|
||||||
def test_docker_is_running_process_error():
|
def test_docker_is_running_process_error():
|
||||||
with mock.patch(
|
with mock.patch(
|
||||||
'pre_commit.languages.docker.cmd_output',
|
'pre_commit.languages.docker.cmd_output',
|
||||||
side_effect=CalledProcessError(*(None,) * 4)
|
side_effect=CalledProcessError(*(None,) * 4),
|
||||||
):
|
):
|
||||||
assert docker.docker_is_running() is False
|
assert docker.docker_is_running() is False
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ def test_CalledProcessError_str():
|
||||||
|
|
||||||
def test_CalledProcessError_str_nooutput():
|
def test_CalledProcessError_str_nooutput():
|
||||||
error = CalledProcessError(
|
error = CalledProcessError(
|
||||||
1, [str('git'), str('status')], 0, (str(''), str(''))
|
1, [str('git'), str('status')], 0, (str(''), str('')),
|
||||||
)
|
)
|
||||||
assert str(error) == (
|
assert str(error) == (
|
||||||
"Command: ['git', 'status']\n"
|
"Command: ['git', 'status']\n"
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ def test_python_hook(tempdir_factory, store):
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
tempdir_factory, store, 'python_hooks_repo',
|
tempdir_factory, store, 'python_hooks_repo',
|
||||||
'foo', [os.devnull],
|
'foo', [os.devnull],
|
||||||
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n"
|
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ def test_python_hook_args_with_spaces(tempdir_factory, store):
|
||||||
'hooks': [{
|
'hooks': [{
|
||||||
'id': 'foo',
|
'id': 'foo',
|
||||||
'args': ['i have spaces', 'and"\'quotes', '$and !this'],
|
'args': ['i have spaces', 'and"\'quotes', '$and !this'],
|
||||||
}]
|
}],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ def test_python_hook_weird_setup_cfg(tempdir_factory, store):
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
tempdir_factory, store, 'python_hooks_repo',
|
tempdir_factory, store, 'python_hooks_repo',
|
||||||
'foo', [os.devnull],
|
'foo', [os.devnull],
|
||||||
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n"
|
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -160,7 +160,7 @@ def test_run_a_failing_docker_hook(tempdir_factory, store):
|
||||||
tempdir_factory, store, 'docker_hooks_repo',
|
tempdir_factory, store, 'docker_hooks_repo',
|
||||||
'docker-hook-failing',
|
'docker-hook-failing',
|
||||||
['Hello World from docker'], b'',
|
['Hello World from docker'], b'',
|
||||||
expected_return_code=1
|
expected_return_code=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -219,7 +219,7 @@ def test_run_ruby_hook_with_disable_shared_gems(
|
||||||
tmpdir.join('.bundle').mkdir()
|
tmpdir.join('.bundle').mkdir()
|
||||||
tmpdir.join('.bundle', 'config').write(
|
tmpdir.join('.bundle', 'config').write(
|
||||||
'BUNDLE_DISABLE_SHARED_GEMS: true\n'
|
'BUNDLE_DISABLE_SHARED_GEMS: true\n'
|
||||||
'BUNDLE_PATH: vendor/gem\n'
|
'BUNDLE_PATH: vendor/gem\n',
|
||||||
)
|
)
|
||||||
with cwd(tmpdir.strpath):
|
with cwd(tmpdir.strpath):
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
|
|
@ -322,7 +322,7 @@ def test_run_hook_with_curly_braced_arguments(tempdir_factory, store):
|
||||||
'hooks': [{
|
'hooks': [{
|
||||||
'id': 'arg-per-line',
|
'id': 'arg-per-line',
|
||||||
'args': ['hi {1}', "I'm {a} problem"],
|
'args': ['hi {1}', "I'm {a} problem"],
|
||||||
}]
|
}],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ def test_local_hooks(tempdir_factory, mock_out_store_directory):
|
||||||
('entry', 'DO NOT COMMIT'),
|
('entry', 'DO NOT COMMIT'),
|
||||||
('language', 'pcre'),
|
('language', 'pcre'),
|
||||||
('files', '^(.*)$'),
|
('files', '^(.*)$'),
|
||||||
))))
|
)))),
|
||||||
))
|
))
|
||||||
git_path = git_dir(tempdir_factory)
|
git_path = git_dir(tempdir_factory)
|
||||||
add_config_to_repo(git_path, config)
|
add_config_to_repo(git_path, config)
|
||||||
|
|
@ -101,7 +101,7 @@ def test_local_hooks_alt_config(tempdir_factory, mock_out_store_directory):
|
||||||
('entry', 'DO NOT COMMIT'),
|
('entry', 'DO NOT COMMIT'),
|
||||||
('language', 'pcre'),
|
('language', 'pcre'),
|
||||||
('files', '^(.*)$'),
|
('files', '^(.*)$'),
|
||||||
))))
|
)))),
|
||||||
))
|
))
|
||||||
git_path = git_dir(tempdir_factory)
|
git_path = git_dir(tempdir_factory)
|
||||||
alt_config_file = 'alternate_config.yaml'
|
alt_config_file = 'alternate_config.yaml'
|
||||||
|
|
|
||||||
|
|
@ -366,7 +366,7 @@ def test_load_from_filename_fails_load_strategy(tmpdir):
|
||||||
_assert_exception_trace(
|
_assert_exception_trace(
|
||||||
excinfo.value.args[0],
|
excinfo.value.args[0],
|
||||||
# ANY is json's error message
|
# ANY is json's error message
|
||||||
('File {}'.format(f.strpath), mock.ANY)
|
('File {}'.format(f.strpath), mock.ANY),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ def test_get_default_directory_defaults_to_home():
|
||||||
|
|
||||||
def test_uses_environment_variable_when_present():
|
def test_uses_environment_variable_when_present():
|
||||||
with mock.patch.dict(
|
with mock.patch.dict(
|
||||||
os.environ, {'PRE_COMMIT_HOME': '/tmp/pre_commit_home'}
|
os.environ, {'PRE_COMMIT_HOME': '/tmp/pre_commit_home'},
|
||||||
):
|
):
|
||||||
ret = _get_default_directory()
|
ret = _get_default_directory()
|
||||||
assert ret == '/tmp/pre_commit_home'
|
assert ret == '/tmp/pre_commit_home'
|
||||||
|
|
@ -89,7 +89,7 @@ def test_clone(store, tempdir_factory, log_info_mock):
|
||||||
ret = store.clone(path, sha)
|
ret = store.clone(path, sha)
|
||||||
# Should have printed some stuff
|
# Should have printed some stuff
|
||||||
assert log_info_mock.call_args_list[0][0][0].startswith(
|
assert log_info_mock.call_args_list[0][0][0].startswith(
|
||||||
'Initializing environment for '
|
'Initializing environment for ',
|
||||||
)
|
)
|
||||||
|
|
||||||
# Should return a directory inside of the store
|
# Should return a directory inside of the store
|
||||||
|
|
@ -138,7 +138,7 @@ def test_clone_when_repo_already_exists(store):
|
||||||
with sqlite3.connect(store.db_path) as db:
|
with sqlite3.connect(store.db_path) as db:
|
||||||
db.execute(
|
db.execute(
|
||||||
'INSERT INTO repos (repo, ref, path) '
|
'INSERT INTO repos (repo, ref, path) '
|
||||||
'VALUES ("fake_repo", "fake_ref", "fake_path")'
|
'VALUES ("fake_repo", "fake_ref", "fake_path")',
|
||||||
)
|
)
|
||||||
|
|
||||||
assert store.clone('fake_repo', 'fake_ref') == 'fake_path'
|
assert store.clone('fake_repo', 'fake_ref') == 'fake_path'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue