Skip to content

Commit 62a63d2

Browse files
committed
Add pass_filenames support
1 parent e9f927b commit 62a63d2

4 files changed

Lines changed: 38 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: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@
1313
from pre_commit_mirror_maker.make_repo import make_repo
1414

1515

16+
_KWARGS = {
17+
'pass_filenames': 'true',
18+
'require_serial': 'false',
19+
'minimum_pre_commit_version': '0',
20+
}
21+
22+
1623
def _cmd(*cmd):
1724
return subprocess.check_output(cmd).strip().decode()
1825

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

6168
# Assert that our things got copied over
@@ -76,8 +83,8 @@ def test_arguments(in_git_dir):
7683
version='0.6.2', language='python', name='yapf',
7784
description='Yet another Python formatter.', entry='yapf', id='yapf',
7885
match_key='files', match_val=r'\.py$', args='["-i"]',
79-
additional_dependencies='["scikit-learn"]', require_serial='false',
80-
minimum_pre_commit_version='0',
86+
additional_dependencies='["scikit-learn"]',
87+
**(_KWARGS | {'pass_filenames': 'false'}),
8188
)
8289
contents = in_git_dir.join('.pre-commit-hooks.yaml').read()
8390
assert yaml.safe_load(contents) == [{
@@ -88,6 +95,7 @@ def test_arguments(in_git_dir):
8895
'language': 'python',
8996
'files': r'\.py$',
9097
'args': ['-i'],
98+
'pass_filenames': False,
9199
'require_serial': False,
92100
'additional_dependencies': ['scikit-learn'],
93101
'minimum_pre_commit_version': '0',
@@ -106,7 +114,7 @@ def test_make_repo_starting_empty(in_git_dir, fake_versions):
106114
'.',
107115
language='ruby', name='scss-lint', description='', entry='scss-lint',
108116
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
109-
require_serial='false', minimum_pre_commit_version='0',
117+
**_KWARGS,
110118
)
111119

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

144152
assert not in_git_dir.join('hooks.yaml').exists()
@@ -158,7 +166,7 @@ def test_ruby_integration(in_git_dir):
158166
'.',
159167
language='ruby', name='scss-lint', description='', entry='scss-lint',
160168
id='scss-lint', match_key='files', match_val=r'\.scss$', args='[]',
161-
require_serial='false', minimum_pre_commit_version='0',
169+
**_KWARGS,
162170
)
163171
# Our files should exist
164172
assert in_git_dir.join('.version').exists()
@@ -178,7 +186,7 @@ def test_node_integration(in_git_dir):
178186
'.',
179187
language='node', name='jshint', description='', entry='jshint',
180188
id='jshint', match_key='files', match_val=r'\.js$', args='[]',
181-
require_serial='false', minimum_pre_commit_version='0',
189+
**_KWARGS,
182190
)
183191
# Our files should exist
184192
assert in_git_dir.join('.version').exists()
@@ -198,7 +206,7 @@ def test_python_integration(in_git_dir):
198206
'.',
199207
language='python', name='flake8', description='', entry='flake8',
200208
id='flake8', match_key='files', match_val=r'\.py$', args='[]',
201-
require_serial='false', minimum_pre_commit_version='0',
209+
**_KWARGS,
202210
)
203211
# Our files should exist
204212
assert in_git_dir.join('.version').exists()
@@ -221,8 +229,7 @@ def test_rust_integration(in_git_dir):
221229
'.',
222230
language='rust', name='shellharden', description='',
223231
entry='shellharden', id='shellharden', match_key='types',
224-
match_val='shell', args='["--replace"]', require_serial='false',
225-
minimum_pre_commit_version='0',
232+
match_val='shell', args='["--replace"]', **_KWARGS,
226233
)
227234
# Our files should exist
228235
assert in_git_dir.join('.version').exists()
@@ -243,7 +250,7 @@ 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', **_KWARGS,
247254
)
248255
# Our files should exist
249256
assert in_git_dir.join('.version').exists()

0 commit comments

Comments
 (0)