Support docker hooks with args

This commit is contained in:
Ben Picolo 2017-01-05 09:31:22 -05:00
parent 58df7c06e1
commit b7bd825e15
3 changed files with 23 additions and 3 deletions

View file

@ -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)

View file

@ -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

View file

@ -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