mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Support docker hooks with args
This commit is contained in:
parent
58df7c06e1
commit
b7bd825e15
3 changed files with 23 additions and 3 deletions
|
|
@ -81,14 +81,17 @@ def run_hook(repo_cmd_runner, hook, file_args):
|
||||||
# Rebuild the docker image in case it has gone missing, as many people do
|
# Rebuild the docker image in case it has gone missing, as many people do
|
||||||
# automated cleanup of docker images.
|
# automated cleanup of docker images.
|
||||||
build_docker_image(repo_cmd_runner, pull=False)
|
build_docker_image(repo_cmd_runner, pull=False)
|
||||||
|
|
||||||
|
entry_parts = hook['entry'].split(' ')
|
||||||
|
entry_executable, entry_args = entry_parts[0], entry_parts[1:]
|
||||||
|
|
||||||
cmd = (
|
cmd = (
|
||||||
'docker', 'run',
|
'docker', 'run',
|
||||||
'--rm',
|
'--rm',
|
||||||
'-u', '{}:{}'.format(os.getuid(), os.getgid()),
|
|
||||||
'-v', '{}:/src:rw'.format(os.getcwd()),
|
'-v', '{}:/src:rw'.format(os.getcwd()),
|
||||||
'--workdir', '/src',
|
'--workdir', '/src',
|
||||||
'--entrypoint', hook['entry'],
|
'--entrypoint', entry_executable,
|
||||||
docker_tag(repo_cmd_runner)
|
docker_tag(repo_cmd_runner)
|
||||||
)
|
)
|
||||||
|
|
||||||
return xargs(cmd + tuple(hook['args']), file_args)
|
return xargs(cmd + tuple(entry_args) + tuple(hook['args']), file_args)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,12 @@
|
||||||
language: docker
|
language: docker
|
||||||
files: \.txt$
|
files: \.txt$
|
||||||
|
|
||||||
|
- id: docker-hook-arg
|
||||||
|
name: Docker test hook
|
||||||
|
entry: echo -n
|
||||||
|
language: docker
|
||||||
|
files: \.txt$
|
||||||
|
|
||||||
- id: docker-hook-failing
|
- id: docker-hook-failing
|
||||||
name: Docker test hook with nonzero exit code
|
name: Docker test hook with nonzero exit code
|
||||||
entry: bork
|
entry: bork
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,17 @@ def test_run_a_docker_hook(tempdir_factory, store):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@skipif_slowtests_false
|
||||||
|
@skipif_cant_run_docker
|
||||||
|
@pytest.mark.integration
|
||||||
|
def test_run_a_docker_hook_with_entry_args(tempdir_factory, store):
|
||||||
|
_test_hook_repo(
|
||||||
|
tempdir_factory, store, 'docker_hooks_repo',
|
||||||
|
'docker-hook-arg',
|
||||||
|
['Hello World from docker'], b'Hello World from docker',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@skipif_slowtests_false
|
@skipif_slowtests_false
|
||||||
@skipif_cant_run_docker
|
@skipif_cant_run_docker
|
||||||
@pytest.mark.integration
|
@pytest.mark.integration
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue