Skip to content

Commit 9e25d49

Browse files
committed
Add pass_filenames support
1 parent e9f927b commit 9e25d49

4 files changed

Lines changed: 39 additions & 12 deletions

File tree

pre_commit_mirror_maker/all/.pre-commit-hooks.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
language: {language}
66
'{match_key}': {match_val}
77
args: {args}
8+
pass_filenames: {pass_filenames}
89
require_serial: {require_serial}
910
additional_dependencies: {additional_dependencies}
1011
minimum_pre_commit_version: {minimum_pre_commit_version!r}

pre_commit_mirror_maker/main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ def main(argv: Sequence[str] | None = None) -> int:
7373
'--require-serial', action='store_true',
7474
help='Set `require_serial: true` for the hook',
7575
)
76+
parser.add_argument(
77+
'--pass-filenames', action=argparse.BooleanOptionalAction,
78+
default=True,
79+
help='Set `pass_filenames` for the hook',
80+
)
7681
args = parser.parse_args(argv)
7782

7883
minimum_pre_commit_version = '0'
@@ -105,6 +110,7 @@ def main(argv: Sequence[str] | None = None) -> int:
105110
match_key=match_key,
106111
match_val=match_val,
107112
args=json.dumps(split_by_commas(args.args)),
113+
pass_filenames=json.dumps(args.pass_filenames),
108114
require_serial=json.dumps(args.require_serial),
109115
minimum_pre_commit_version=minimum_pre_commit_version,
110116
)

tests/main_test.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ def test_main_passes_args(mock_make_repo):
4343
language='ruby', name='scss-lint', description='',
4444
entry='scss-lint-entry',
4545
id='scss-lint-id', match_key='files', match_val=r'\.scss$', args='[]',
46-
require_serial='false', minimum_pre_commit_version='0',
46+
pass_filenames='true', require_serial='false',
47+
minimum_pre_commit_version='0',
4748
)
4849

4950

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

8283

84+
def test_main_no_pass_filenames(mock_make_repo):
85+
assert not main.main((
86+
'.',
87+
'--language', 'python',
88+
'--package-name', 'yapf',
89+
'--files-regex', r'\.py$',
90+
'--no-pass-filenames',
91+
))
92+
assert mock_make_repo.call_args[1]['pass_filenames'] == 'false'
93+
94+
8395
def test_main_with_types_and_types_or(mock_make_repo, capsys):
8496
with pytest.raises(SystemExit) as exc_info:
8597
main.main((

tests/make_repo_test.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ def test_commit_version(in_git_dir):
5555
version='0.24.1', language='ruby', name='scss-lint', description='',
5656
entry='scss-lint', id='scss-lint', match_key='files',
5757
match_val=r'\.scss$', args='[]', additional_dependencies='[]',
58-
require_serial='false', minimum_pre_commit_version='0',
58+
pass_filenames='true', require_serial='false',
59+
minimum_pre_commit_version='0',
5960
)
6061

6162
# Assert that our things got copied over
@@ -76,8 +77,8 @@ def test_arguments(in_git_dir):
7677
version='0.6.2', language='python', name='yapf',
7778
description='Yet another Python formatter.', entry='yapf', id='yapf',
7879
match_key='files', match_val=r'\.py$', args='["-i"]',
79-
additional_dependencies='["scikit-learn"]', require_serial='false',
80-
minimum_pre_commit_version='0',
80+
pass_filenames='false', additional_dependencies='["scikit-learn"]',
81+
require_serial='false', minimum_pre_commit_version='0',
8182
)
8283
contents = in_git_dir.join('.pre-commit-hooks.yaml').read()
8384
assert yaml.safe_load(contents) == [{
@@ -88,6 +89,7 @@ def test_arguments(in_git_dir):
8889
'language': 'python',
8990
'files': r'\.py$',
9091
'args': ['-i'],
92+
'pass_filenames': False,
9193
'require_serial': False,
9294
'additional_dependencies': ['scikit-learn'],
9395
'minimum_pre_commit_version': '0',
@@ -106,7 +108,8 @@ def test_make_repo_starting_empty(in_git_dir, fake_versions):
106108
'.',
107109
language='ruby', name='scss-lint', description='', entry='scss-lint',
108110
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
109-
require_serial='false', minimum_pre_commit_version='0',
111+
pass_filenames='true', require_serial='false',
112+
minimum_pre_commit_version='0',
110113
)
111114

112115
# Assert that our things got copied over
@@ -138,7 +141,8 @@ def test_make_repo_starting_at_version(in_git_dir, fake_versions):
138141
'.',
139142
language='ruby', name='scss-lint', description='', entry='scss-lint',
140143
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
141-
require_serial='false', minimum_pre_commit_version='0',
144+
pass_filenames='true', require_serial='false',
145+
minimum_pre_commit_version='0',
142146
)
143147

144148
assert not in_git_dir.join('hooks.yaml').exists()
@@ -158,7 +162,8 @@ def test_ruby_integration(in_git_dir):
158162
'.',
159163
language='ruby', name='scss-lint', description='', entry='scss-lint',
160164
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
161-
require_serial='false', minimum_pre_commit_version='0',
165+
pass_filenames='true', require_serial='false',
166+
minimum_pre_commit_version='0',
162167
)
163168
# Our files should exist
164169
assert in_git_dir.join('.version').exists()
@@ -178,7 +183,8 @@ def test_node_integration(in_git_dir):
178183
'.',
179184
language='node', name='jshint', description='', entry='jshint',
180185
id='jshint', match_key='files', match_val=r'\.js$', args='[]',
181-
require_serial='false', minimum_pre_commit_version='0',
186+
pass_filenames='true', require_serial='false',
187+
minimum_pre_commit_version='0',
182188
)
183189
# Our files should exist
184190
assert in_git_dir.join('.version').exists()
@@ -198,7 +204,8 @@ def test_python_integration(in_git_dir):
198204
'.',
199205
language='python', name='flake8', description='', entry='flake8',
200206
id='flake8', match_key='files', match_val=r'\.py$', args='[]',
201-
require_serial='false', minimum_pre_commit_version='0',
207+
pass_filenames='true', require_serial='false',
208+
minimum_pre_commit_version='0',
202209
)
203210
# Our files should exist
204211
assert in_git_dir.join('.version').exists()
@@ -221,8 +228,8 @@ def test_rust_integration(in_git_dir):
221228
'.',
222229
language='rust', name='shellharden', description='',
223230
entry='shellharden', id='shellharden', match_key='types',
224-
match_val='shell', args='["--replace"]', require_serial='false',
225-
minimum_pre_commit_version='0',
231+
match_val='shell', args='["--replace"]', pass_filenames='true',
232+
require_serial='false', minimum_pre_commit_version='0',
226233
)
227234
# Our files should exist
228235
assert in_git_dir.join('.version').exists()
@@ -243,7 +250,8 @@ def test_golang_integration(in_git_dir):
243250
'.',
244251
language='golang', name='mvdan.cc/gofumpt', description='',
245252
entry='gofumpt', id='gofumpt', match_key='types', match_val='go',
246-
args='-w', require_serial='false', minimum_pre_commit_version='0',
253+
args='-w', pass_filenames='true', require_serial='false',
254+
minimum_pre_commit_version='0',
247255
)
248256
# Our files should exist
249257
assert in_git_dir.join('.version').exists()

0 commit comments

Comments
 (0)