Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pre_commit_mirror_maker/all/.pre-commit-hooks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
language: {language}
'{match_key}': {match_val}
args: {args}
pass_filenames: {pass_filenames}
require_serial: {require_serial}
additional_dependencies: {additional_dependencies}
minimum_pre_commit_version: {minimum_pre_commit_version!r}
6 changes: 6 additions & 0 deletions pre_commit_mirror_maker/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ def main(argv: Sequence[str] | None = None) -> int:
'--require-serial', action='store_true',
help='Set `require_serial: true` for the hook',
)
parser.add_argument(
'--pass-filenames', action=argparse.BooleanOptionalAction,
default=True,
help='Set `pass_filenames` for the hook',
)
args = parser.parse_args(argv)

minimum_pre_commit_version = '0'
Expand Down Expand Up @@ -105,6 +110,7 @@ def main(argv: Sequence[str] | None = None) -> int:
match_key=match_key,
match_val=match_val,
args=json.dumps(split_by_commas(args.args)),
pass_filenames=json.dumps(args.pass_filenames),
require_serial=json.dumps(args.require_serial),
minimum_pre_commit_version=minimum_pre_commit_version,
)
Expand Down
14 changes: 13 additions & 1 deletion tests/main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ def test_main_passes_args(mock_make_repo):
language='ruby', name='scss-lint', description='',
entry='scss-lint-entry',
id='scss-lint-id', match_key='files', match_val=r'\.scss$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
pass_filenames='true', require_serial='false',
minimum_pre_commit_version='0',
)


Expand Down Expand Up @@ -80,6 +81,17 @@ def test_main_with_args(mock_make_repo):
assert mock_make_repo.call_args[1]['args'] == expected


def test_main_no_pass_filenames(mock_make_repo):
assert not main.main((
'.',
'--language', 'python',
'--package-name', 'yapf',
'--files-regex', r'\.py$',
'--no-pass-filenames',
))
assert mock_make_repo.call_args[1]['pass_filenames'] == 'false'


def test_main_with_types_and_types_or(mock_make_repo, capsys):
with pytest.raises(SystemExit) as exc_info:
main.main((
Expand Down
29 changes: 18 additions & 11 deletions tests/make_repo_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@
from pre_commit_mirror_maker.make_repo import make_repo


_KWARGS = {
'pass_filenames': 'true',
'require_serial': 'false',
'minimum_pre_commit_version': '0',
}


def _cmd(*cmd):
return subprocess.check_output(cmd).strip().decode()

Expand Down Expand Up @@ -55,7 +62,7 @@ def test_commit_version(in_git_dir):
version='0.24.1', language='ruby', name='scss-lint', description='',
entry='scss-lint', id='scss-lint', match_key='files',
match_val=r'\.scss$', args='[]', additional_dependencies='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)

# Assert that our things got copied over
Expand All @@ -76,8 +83,8 @@ def test_arguments(in_git_dir):
version='0.6.2', language='python', name='yapf',
description='Yet another Python formatter.', entry='yapf', id='yapf',
match_key='files', match_val=r'\.py$', args='["-i"]',
additional_dependencies='["scikit-learn"]', require_serial='false',
minimum_pre_commit_version='0',
additional_dependencies='["scikit-learn"]',
**(_KWARGS | {'pass_filenames': 'false'}),
)
contents = in_git_dir.join('.pre-commit-hooks.yaml').read()
assert yaml.safe_load(contents) == [{
Expand All @@ -88,6 +95,7 @@ def test_arguments(in_git_dir):
'language': 'python',
'files': r'\.py$',
'args': ['-i'],
'pass_filenames': False,
'require_serial': False,
'additional_dependencies': ['scikit-learn'],
'minimum_pre_commit_version': '0',
Expand All @@ -106,7 +114,7 @@ def test_make_repo_starting_empty(in_git_dir, fake_versions):
'.',
language='ruby', name='scss-lint', description='', entry='scss-lint',
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)

# Assert that our things got copied over
Expand Down Expand Up @@ -138,7 +146,7 @@ def test_make_repo_starting_at_version(in_git_dir, fake_versions):
'.',
language='ruby', name='scss-lint', description='', entry='scss-lint',
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)

assert not in_git_dir.join('hooks.yaml').exists()
Expand All @@ -158,7 +166,7 @@ def test_ruby_integration(in_git_dir):
'.',
language='ruby', name='scss-lint', description='', entry='scss-lint',
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)
# Our files should exist
assert in_git_dir.join('.version').exists()
Expand All @@ -178,7 +186,7 @@ def test_node_integration(in_git_dir):
'.',
language='node', name='jshint', description='', entry='jshint',
id='jshint', match_key='files', match_val=r'\.js$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)
# Our files should exist
assert in_git_dir.join('.version').exists()
Expand All @@ -198,7 +206,7 @@ def test_python_integration(in_git_dir):
'.',
language='python', name='flake8', description='', entry='flake8',
id='flake8', match_key='files', match_val=r'\.py$', args='[]',
require_serial='false', minimum_pre_commit_version='0',
**_KWARGS,
)
# Our files should exist
assert in_git_dir.join('.version').exists()
Expand All @@ -221,8 +229,7 @@ def test_rust_integration(in_git_dir):
'.',
language='rust', name='shellharden', description='',
entry='shellharden', id='shellharden', match_key='types',
match_val='shell', args='["--replace"]', require_serial='false',
minimum_pre_commit_version='0',
match_val='shell', args='["--replace"]', **_KWARGS,
)
# Our files should exist
assert in_git_dir.join('.version').exists()
Expand All @@ -243,7 +250,7 @@ def test_golang_integration(in_git_dir):
'.',
language='golang', name='mvdan.cc/gofumpt', description='',
entry='gofumpt', id='gofumpt', match_key='types', match_val='go',
args='-w', require_serial='false', minimum_pre_commit_version='0',
args='-w', **_KWARGS,
)
# Our files should exist
assert in_git_dir.join('.version').exists()
Expand Down
Loading